std :: map自定义键非唯一性问题

时间:2010-11-29 20:26:11

标签: c++ stl map key

无法在Google上找到答案..

当我使用std :: string时,以下工作正常。

map <fxString, int> test;
test.insert(pair <fxString, int> ("Bla", 1));
test.insert(pair <fxString, int> ("Bla", 2));
test.insert(pair <fxString, int> ("Bla", 3));
cout << fxInt2String(test["Bla"]) << endl;

哪个应该输出1,而是输出0

当我遍历地图时,每个键值对都在那里,坐在彼此旁边嘲笑我。

fxString定义以下运算符: 运算符&gt; 运算符&lt; operator == operator!=

还有更多,我测试了它们。

格罗姆。

2 个答案:

答案 0 :(得分:6)

  

“当我遍历地图时每个   键值对是“

那么,你的fxString::operator<出了问题,因为如果密钥已经存在,insert成员函数应该没有效果。您确定此运算符会模拟strict weak ordering吗?

假设运算符已损坏,test["Bla"]可以在地图中添加另一个元素,默认值为0.

答案 1 :(得分:0)

这很好(正如你所说)

map <string, int> test;
test.insert(pair <string, int> ("Bla", 1));
test.insert(pair <string, int> ("Bla", 2));
test.insert(pair <string, int> ("Bla", 3));
cout << test["Bla"] << endl;

因此,fxInt2String函数或运算符重载必定存在问题。

要获得进一步的帮助,您应该向我们提供相关功能的代码。