地圖是空的,所以m.begin()
等於過去最末端迭代器,因此是無效的。
你首先必須insert
元素(你也可以通過使用operator[]
隱式地做到這一點)使它有用。
此外,你不能修改這樣的元素的關鍵。您必須從地圖中刪除(erase
)元素並使用新密鑰插入新元素。
這裏有一個關於一個例子:
#include<iostream>
#include<map>
using namespace std;
int main(){
map<int, int> m;
// insert element by map::insert
m.insert(make_pair(3, 3));
// insert element by map::operator[]
m[5] = 5;
std::cout << "increased values by one" << std::endl;
for(map<int, int>::iterator it = m.begin(); it != m.end(); ++it)
{
it->second += 1;
cout << it->first << " " << it->second << std::endl;
}
// replace an element:
map<int, int>::iterator thing = m.find(3);
int value = thing->second;
m.erase(thing);
m[4] = value;
std::cout << "replaced an element and inserted with different key" << std::endl;
for(map<int, int>::iterator it = m.begin(); it != m.end(); ++it)
{
cout << it->first << " " << it->second << std::endl;
}
return 0;
}
空'map'。而且,'key'不可修改。 – Jarod42