是否保证std :: map中的元素是有序的?

Tho*_*son 5 c++ stl

这只是一个实现副作用(红黑树)还是c ++标准保证了顺序?

Jam*_*lis 11

有序迭代不是实现细节; 它受C++标准的保证.它是所有关联容器的基本属性(C++03§23.1.2/ 9):

关联容器的迭代器的基本性质是它们通过在键的非递减的次序,其中非下降是由用于构建他们的比较中定义的容器迭代.对于任何两个可提领迭代器ij从使得距离ij为正,

    value_comp(*j, *i) == false
Run Code Online (Sandbox Code Playgroud)

value_comp是用于构造地图的比较器(默认情况下,它是std::less<T>).

  • @rlbond:是的.但是,C++ 03没有无序的关联容器,在C++ 0x中它们被单独分类("关联容器"与"无序关联容器"分开). (2认同)