【发布时间】:2015-06-17 15:51:41
【问题描述】:
我想遍历地图,但内部循环只会遍历元素的上部。 使用矢量它看起来像这样:
for(auto element1 = myVector.begin() ; element1 != myVector.end() ; ++element1){
for(auto element2 = element1 + 1; element2 != myVector.end() ; ++element2){
//my stuff
}
}
但是使用地图element1 + 1 返回错误no operator matches this operand.. 我相信这是因为元素没有在地图中排序。
那么我该如何正确地做到这一点呢?我目前正在使用这种混乱的解决方法,需要在每个循环中进行测试:
for(auto element1 = myMap.begin() ; element1 != myMap.end() ; ++element1){
for(auto element2 = element1; element2 != myMap.end() ; ++element2){
if(element->first != element2->first)
//my stuff
}
}
【问题讨论】:
-
@Pixelchemist:对,我看不懂
-
map中的元素按键排序。不能使用element1 + 1的原因是与映射关联的迭代器不是随机访问迭代器。你可以增加它们,但你不能给它们加 1。
标签: c++ dictionary iterator