Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
std::map中的元素是否保证有序? 这只是一个实现的副作用(红黑树)还是顺序由C++标准保证?< P>它是由C++标准保证的。保证。如果您想要不受此限制的东西,请尝试boost::unordered_map_C++_Stl - Fatal编程技术网

std::map中的元素是否保证有序? 这只是一个实现的副作用(红黑树)还是顺序由C++标准保证?< P>它是由C++标准保证的。保证。如果您想要不受此限制的东西,请尝试boost::unordered_map

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: 每个关联容器都是 在键上参数化和排序 关系比较,导致严格的 元素的弱序(

有序迭代不是实现细节;它是由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:

每个关联容器都是 在
键上参数化
和排序 关系
比较
,导致严格的 元素的弱序(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'。