我使用这样的东西:
map<string, Data>::iterator it = mymap->begin();
map<string, Data>::iterator end = mymap->end();
while (it != end) {
// do stuff
++it;
}
我只是想知道即使地图是空的,这是否也会有效。 如果地图为空,我找不到有关map :: begin()返回的任何信息。
答案 0 :(得分:16)
如果地图为空,则begin
和end
迭代器相等,即返回mymap->end()
。
答案 1 :(得分:-1)
你不能试图在过去结束时增加迭代器, OR DEREFERENCE是一个空映射的迭代器,这就是为什么你必须在代码中使用if语句来检查地图和/或迭代器才能使用它。