[英]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.