std :: map проблема уникальности пользовательского ключа - PullRequest
0 голосов
/ 29 ноября 2010

Не удалось найти ответ в 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

Когда я выполняю итерацию по карте, каждая пара ключ-значение находится там, сидя рядом друг с другом и издеваясь.1010 *

И еще, и я их проверял ..

Гром.

Ответы [ 2 ]

6 голосов
/ 29 ноября 2010

"Когда я перебираю карту каждая пара ключ-значение есть там"

Что-то не так с вашим fxString::operator< тогда, потому что insert функция-член не должна иметь никакого эффекта, если ключ уже присутствует.Вы уверены, что этот оператор моделирует строгий слабый порядок ?

Если предположить, что оператор не работает, test["Bla"] имеет эффект добавления еще одного элемента на карту со значением по умолчанию 0.

0 голосов
/ 29 ноября 2010

Это отлично работает (как вы уже заметили)

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 функцией или с перегрузками вашего оператора.

Чтобы получить дополнительную помощь, выдолжен предоставить нам код для рассматриваемых функций.

...