对于空地图,map :: begin()的返回值是多少?

时间:2012-05-21 08:12:56

标签: c++ stl map

我使用这样的东西:

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

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

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

2 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:-1)

你不能试图在过去结束时增加迭代器, OR DEREFERENCE是一个空映射的迭代器,这就是为什么你必须在代码中使用if语句来检查地图和/或迭代器才能使用它。