簡體   English   中英

std :: unordered_map的遞增迭代器

[英]incrementing iterator of std::unordered_map

為什么第7行和第8行不好? 為什么增加/減少某些迭代器很不好?

#include <unordered_map>

int main()
{
    std::unordered_multimap<int,int> myumm({{1,3},{3,2},{5,5},{0,9}});
    auto first = myumm.begin();
    auto second = first+1;      // bad
    auto third = --myumm.end(); // bad too
    auto fourth = myumm.end();
}

std::unordered_multimap提供了正向迭代器。 這些是迭代器,您可以分配,取消引用,比較和遞增。

為了能夠減少迭代器( --it ),您至少需要一個雙向迭代器 (例如std::multimap )。

為了能夠向迭代器( it + 1 )添加(任意數量),您需要一個隨機訪問迭代器 (例如std::vector提供的)。 由一個以上的地方前進較弱的迭代,使用std::advance(it, 42)用於推進it在適當位置),或std::next(it, 42)它返回遞增拷貝並且不修改it )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM