C++ STL,我想知道映射中的双向迭代器和运算符[]有什么不同

标签 c++ stl

我了解到随机访问迭代器和双向迭代器是不同的。 随机访问迭代器可以使用 +, -, += , -=, [] 运算符,但双向迭代器不能。 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/

相关文章:

c++ - 如何从 C++ vector 中访问单个单词?

c++ - d3d 中动态顶点缓冲区的效率和使用

c++ - std::list 中最小元素的索引

c++ - 我已经重载<<和=运算符。为什么当我将一个对象分配给另一个对象并尝试打印该对象时,却打印出了垃圾邮件?

c++ - 从二进制文件读取时获取错误数据

c++ - 在 Anjuta 3.4.3 中将 -std=c++11 添加到编译器选项

c++ - 无法分配没有可行重载 '=' 错误的迭代器

c++ - C++ STL 中 max_element 和 minmax_element 的行为差异

C++ |重载运算符 << |标准:: map

c++ - C 的标准库