std::stable_partition

来自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 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

is_partitioned(C++11)
partition
partition_copy(C++11)

|

stable_partition
partition_point(C++11)

|-

排序操作(排序的区间)
原文:
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 BidirIt, class UnaryPredicate >
BidirIt stable_partition( BidirIt first, BidirIt last, UnaryPredicate p );
重新排序的范围[first, last)在这样一种方式中的元素,所有元素的谓词p回报true之前的元素为谓词p回报false。元素的相对顺序被保存.
原文:
Reorders the elements in the range [first, last) in such a way that all elements for which the predicate p returns true precede the elements for which predicate p returns false. Relative order of the elements is preserved.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 参数

first, last -
范围内的元素进行重新排序
原文:
the range of elements to reorder
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
p - 一元谓词
如果该元素的,要责令之前的其他元素
原文:
if the element should be ordered before other elements
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
返回​true.

谓词函数的签名形式如下:

 bool pred(const Type &a);

虽然函数签名中const &不是必须的,但是函数必须保证不会修改传递给它的对象。
类型 Type 必须能使 BidirIt 对象能够被解引用并隐式转换为 Type. ​

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

[编辑] 返回值

迭代器到第二组的第一个元素
原文:
Iterator to the first element of the second group
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 复杂度

究竟last-first应用程序的谓词和最(last-first)*log(last-first)掉期,如果有足够的内存或线性的掉期,如果有足够的可用内存.
原文:
Exactly last-first applications of the predicate and at most (last-first)*log(last-first) swaps if there is insufficient memory or linear number of swaps if sufficient memory is available.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 示例

#include <iostream>
#include <algorithm>
 
int main()
{
    std::vector<int> v{0, 0, 3, 0, 2, 4, 5, 0, 7};
    std::stable_partition(v.begin(), v.end(), [](int n){return n>0;});
    for (int n : v) {
        std::cout << n << ' ';
    }
    std::cout << '\n';
}

输出:

3 2 4 5 7 0 0 0 0

[编辑] 另请参阅

把一个区间的元素分为两组
(函数模板) [edit]