我有一個要求,用C++創建兩個不同的地圖。密鑰的類型是CHAR*
,Value是指向結構體的指針。我用這些對填充2個地圖,分別進行迭代。在創建兩個映射之後,我需要找到所有這樣的實例,其中CHAR*
引用的字符串的值是相同的。在C++中std :: map鍵
對於這個我使用下面的代碼:
typedef struct _STRUCTTYPE
{
..
} STRUCTTYPE, *PSTRUCTTYPE;
typedef pair <CHAR *,PSTRUCTTYPE> kvpair;
..
CHAR *xyz;
PSTRUCTTYPE abc;
// after filling the information;
Map.insert (kvpair(xyz,abc));
// the above is repeated x times for the first map, and y times for the second map.
// after both are filled out;
std::map<CHAR *, PSTRUCTTYPE>::iterator Iter,findIter;
for (Iter=iteratedMap->begin();Iter!=iteratedMap->end();mapIterator++)
{
char *key = Iter->first;
printf("%s\n",key);
findIter=otherMap->find(key);
//printf("%u",findIter->second);
if (findIter!=otherMap->end())
{
printf("Match!\n");
}
}
上面的代碼並沒有表現出任何的比賽,雖然在這兩種地圖鍵列表表現出明顯的匹配。我的理解是CHAR *的equals運算符只是指針的內存地址。
我的問題是,我應該怎麼做來改變這種類型的鍵的等號運算符,或者我可以使用不同的數據類型的字符串?
我不想編輯它,因爲它可能會轉換成社區Wiki,但如果你使用1010101模式的按鈕(就像KennyTM爲你做的那樣),代碼將會格式化尖括號將正確顯示。 – 2010-04-10 13:54:00