13

我使用这样的东西:

map<string, Data>::iterator it  = mymap->begin();
map<string, Data>::iterator end = mymap->end();

while (it != end) {
    // do stuff
    ++it;
}

我只是想知道即使地图是空的,这是否会起作用。如果地图为空,我找不到任何有关返回 map::begin() 的信息。

4

2 回答 2

18

如果映射为空,则beginend迭代器相等,即返回mymap->end()

于 2012-05-21T08:14:15.627 回答
-1

您不能尝试将迭代器递增到末尾,或者将迭代器引用到空映射,这就是为什么您必须在代码中使用 if 语句来检查映射和/或迭代器,然后再使用它。

于 2017-07-14T20:11:32.910 回答