繁体   English   中英

operator++ 在前向迭代器上做了什么

[英]What does operator++ do on a forward iterator

据我了解, std::unordered_mapstd::unordered_set使用前向迭代器。

我可以做这样的事情

auto it = unordered_map_instance.begin(); 
it++; 

但我不能做这样的事情

auto it = unordered_map_instance.begin(); 
it = it + 1; 

我一直认为++只是简单地增加 1,但对于前向迭代器来说似乎并非如此。 有人可以解释++对前向迭代器的作用吗? 我似乎无法谷歌这个运营商。 +

如果您参考 C++ 标准中的[iterator.requirements] ,则iterator需要operator++() (以及大多数类型的operator++(int) )。 不要将这些与operator+(int)混淆,后者相当于您的第二个示例。 ++运算符加法不同。

至于operator++()实际做了什么,它只是在列表中向前移动一个,即到下一个元素。 例如:

std::map<int,int> map_instance = { { 1,1 }, {2,2}, {3,3} };
auto it = map_instance.begin(); // it points to {1,1}
it++;  // now it points to {2,2}

使用std::advance可以增加一个以上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM