[英]What does operator++ do on a forward iterator
据我了解, std::unordered_map
和std::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.