The Wayback Machine - https://web.archive.org/web/20160430054632/http://zh.cppreference.com/w/cpp/algorithm/stable_sort

std::stable_sort

来自cppreference.com
< cpp‎ | algorithm

 
 
算法库

|- class="t-nv-h1"

| colspan="5" |
功能
原文:
Functions
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

|-

| |- |

修改序列操作
原文:
Non-modifying sequence operations
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
all_of
any_of
none_of
(C++11)
(C++11)
(C++11)
for_each
count
count_if
mismatch
equal

|

|-

修改序列操作
原文:
Modifying sequence operations
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

分区操作
原文:
Partitioning operations
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

排序操作(排序的区间)
原文:
Sorting operations (on sorted ranges)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

is_sorted(C++11)
is_sorted_until(C++11)
sort

|

|-

二进制搜索操作(排序的区间)
原文:
Binary search operations (on sorted ranges)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

设置操作(排序的区间)
原文:
Set operations (on sorted ranges)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

堆的操作
原文:
Heap operations
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

最小/最大操作
原文:
Minimum/maximum operations
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

数字操作
原文:
Numeric operations
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

C库
原文:
C library
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

|

|-

 
在头文件 <algorithm> 中定义
template<class RandomIt >
void stable_sort( RandomIt first, RandomIt last );
(1)
template<class RandomIt, class Compare >
void stable_sort( RandomIt first, RandomIt last, Compare comp );
(2)
范围[first, last)中的元素进行排序按升序排列。保证保留相等元素的顺序。 operator<的第一个版本使用比较的元素,第二个版本使用给定的比较函数comp.
原文:
Sorts the elements in the range [first, last) in ascending order. The order of equal elements is guaranteed to be preserved. The first version uses operator< to compare the elements, the second version uses the given comparison function comp.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑]参数

first, last -
范围内的元素进行排序
原文:
the range of elements to sort
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
comp - comparison function which returns ​true if the first argument is less than the second.

The signature of the comparison function should be equivalent to the following:

 bool cmp(const Type1 &a, const Type2 &b);

The signature does not need to have const&, but the function must not modify the objects passed to it.
类型 Type1Type2 必须能使类型 RandomIt 的对象能够 be dereferenced and then 隐式转换 to both of them。 ​

类型要求
-
RandomIt 必须满足 ValueSwappableRandomAccessIterator 的要求。
-
The type of dereferenced RandomIt must meet the requirements of MoveAssignable and MoveConstructible.

[编辑]返回值

(无)
原文:
(none)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑]复杂度

O(N·log2(N))N =std::distance(first, last)应用cmp。如果额外的可用内存,那么复杂O(N·log(N).
原文:
O(N·log2(N)), where N =std::distance(first, last) applications of cmp. If additional memory is available, then the complexity is O(N·log(N).
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑]注释

该函数尝试分配一个临时缓冲区大小相同的顺序进行排序,通常是通过调用std::get_temporary_buffer。如果分配失败,效率低的算法选择.
原文:
This function attempts to allocate a temporary buffer equal in size to the sequence to be sorted, typically by calling std::get_temporary_buffer. If the allocation fails, the less efficient algorithm is chosen.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑]示例

[编辑]另请参阅

将区间内较小的N个元素排序
(函数模板)[edit]
将区间按升序排序
(函数模板)[edit]
close