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