2
template <class InputIterator, class Distance>
  void advance (InputIterator& it, Distance n);

    InputOutput < Forward < Bidirectional < Random Access

map<int, int> mapInts;
...

std::map<int, int>::iterator it = mapInts.begin();
std::advance (it,5);

Q> map.begin 返回的迭代器类型是什么?InputOut,转发,双向?

谢谢

4

1 回答 1

4

来自Map::begin() 文档

std::map.begin()

将迭代器返回到开头返回一个迭代器,该迭代器引用地图容器中的第一个元素。

因为地图容器始终保持其元素有序,所以 begin 指向首先遵循容器排序标准的元素。

如果容器为空,则返回的迭代器值不应被取消引用。

返回值: 容器中第一个元素的迭代器。

如果映射对象是 const 限定的,则该函数返回一个 const_iterator。否则,它返回一个迭代器。

成员类型 iterator 和 const_iterator 是指向元素(类型 value_type)的双向迭代器类型。请注意,map 容器中的 value_type 是 pair 的别名。

编辑: @Andy Prowl 提供:根据 C++ 标准§ 23.2.4/6

关联容器的迭代器属于双向迭代器类别

于 2013-05-27T23:48:23.940 回答