我有一个要求,用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