std::map中的元素是否保证有序? 这只是一个实现的副作用(红黑树)还是顺序由C++标准保证?< P>它是由C++标准保证的。保证。如果您想要不受此限制的东西,请尝试boost::unordered_map
有序迭代不是实现细节;它是由C++标准保证的。它是所有关联容器的基本属性(C++03§23.1.2/9): 关联容器的迭代器的基本特性是,它们以键的非降序顺序遍历容器,其中非降序由用于构造它们的比较定义。对于任意两个可解引用迭代器std::map中的元素是否保证有序? 这只是一个实现的副作用(红黑树)还是顺序由C++标准保证?< P>它是由C++标准保证的。保证。如果您想要不受此限制的东西,请尝试boost::unordered_map,c++,stl,C++,Stl,有序迭代不是实现细节;它是由C++标准保证的。它是所有关联容器的基本属性(C++03§23.1.2/9): 关联容器的迭代器的基本特性是,它们以键的非降序顺序遍历容器,其中非降序由用于构造它们的比较定义。对于任意两个可解引用迭代器i和j,从i到j的距离为正 value_comp(*j, *i) == false value\u comp是构建映射的比较器(默认情况下,它是std::less)。§23.1.2/2: 每个关联容器都是 在键上参数化和排序 关系比较,导致严格的 元素的弱序(
i
和j
,从i
到j
的距离为正
value_comp(*j, *i) == false
value\u comp
是构建映射的比较器(默认情况下,它是std::less
)。§23.1.2/2:
每个关联容器都是
在键上参数化
和排序
关系比较
,导致严格的
元素的弱序(25.3)
键
…Compare
类型的对象是
调用的比较对象
容器。这个比较对象
可以是指向函数的指针或
具有适当
函数调用操作符
默认的Compare
对象是小于函数std::less
排序是函数的一个属性。这是要求,不是副作用
对对象进行排序是一个副作用。23.1.2/10和23.1.2/9(James引用)保证map/set和multimap/multiset在从
begin
到end的序列上分别具有递增/非递减键。类是std::map,而不是stl::map。否,实现(红黑树,但不一定)被选择以满足订单要求。@rlbond:True。但是,C++03没有无序的关联容器,在C++0x中,它们是单独分类的(“关联容器”与“无序关联容器”是分开的)。或者,类似地,`std::tr1::unordered_map'。