我了解到随机访问迭代器和双向迭代器是不同的。
随机访问迭代器可以使用 +, -, += , -=, []
运算符,但双向迭代器不能。
map 使用双向迭代器。但是 map 仍然使用 []
运算符。
例如:
map<int,int> a;
a[5]++;
效果不错。
我不明白这是做什么的。
有机会,你能告诉我怎么做吗?
最佳答案
random access iterator can use +, -, += , -=, [] operator but bidirectional iterator can't.
这过于简单化了,您已经找到原因了。
双向迭代器无法执行随机访问操作。对于某些容器,[]
是一个随机访问操作。它需要您进入容器一些“距离”。
但是,对于像 map 这样的关联容器,它不是:它是专门为这些容器设计的操作。它需要一个键 并为您提供一个值。这是一个不同的操作。
尝试根据特征和行为而不是符号来思考,因为符号根据上下文具有不同的含义。如果您想了解符号在特定上下文中的含义,可以引用 a reference或到 your book .
关于C++ STL,我想知道映射中的双向迭代器和运算符[]有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54944779/