簡體   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