use*_*451 1 c++ stl 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();
}
Run Code Online (Sandbox Code Playgroud)
std::unordered_multimap
提供Forward Iterators.这些是可以分配,取消引用,比较和增量的迭代器.
为了能够减少迭代器(--it
),您至少需要一个双向迭代器(例如由提供者提供std::multimap
).
为了能够向迭代器(it + 1
)添加(任意数字),您需要一个随机访问迭代器(例如由提供者提供std::vector
).要将一个较弱的迭代器推进多个位置,请使用std::advance(it, 42)
(用于前进it
)或std::next(it, 42)
(返回递增的副本并且不进行修改it
).