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

Ton*_*ony 0 c++ stl key map

无法在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;
Run Code Online (Sandbox Code Playgroud)

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

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

fxString定义以下运算符:operator> operator <operator == operator!=

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

格罗姆.

ice*_*ime 6

"当我遍历地图时,每个 键值对都在那里"

那么,你的fxString::operator<当时有些问题,因为insert如果密钥已经存在,成员函数应该没有效果.你确定这个操作员模拟严格的弱订购吗?

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

  • +1 - `operator <`几乎可以肯定是两个问题的原因.地图插入每个新记录的原因是它搜索"Bla",但找不到它.同样在检索中,它找不到'Bla',并返回一个默认值(同时添加一对新的.) (2认同)