//test
#include <map>
#include <iostream>
using namespace std;
int main()
{
map<int, string> Inventory;
Inventory[1] = "Sword";
Inventory[2] = "Armor";
Inventory[3] = "Shield";
map<int, string>::iterator iter;
for (iter = Inventory.begin(); iter != Inventory.end(); ++iter)
cout << (*iter).first << " - " << (*iter).second << "\n";
iter == Inventory.find(2);
Inventory.erase(iter);
cout << "\n" << Inventory.count(2) << "\n";
iter == Inventory.find(2);
cout << "\n" << (*iter).first << " - " << (*iter).second.size() << "\n\n";
if (Inventory.find(2) == Inventory.end())
cout << "\nNot found.\n";
for (iter = Inventory.begin(); iter != Inventory.end(); ++iter)
cout << (*iter).first << " - " << (*iter).second << "\n";
cout << "\n" << Inventory.size() << "\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Это то, что я получаю, когда я запустить программу:Действительно путаются карты :: Стирание()
1 - Меч
2 - Броня
3 - Щит
2 - 1968772512
1 - Меч
3 - Щит
Так что я немного запутался, почему ключ '2' не быть полностью удалены.
Inventory.count (2) возвращает 1, что означает, что ключ «2» все еще задерживается в инвентаре где-то?
Очевидно, что после стирания ключа «2» find() все еще возвращает итератор к этому значению ключа?
Как именно стираются() работают?