◐ Shell
clean mode source ↗

std::stable_partition — cppreference.com

De cppreference.com

<metanoindex/>

<tbody> </tbody>

Déclaré dans l'en-tête

<algorithm>

template< class BidirIt, class UnaryPredicate > BidirIt stable_partition( BidirIt first, BidirIt last, UnaryPredicate p );

Réordonne les éléments de la gamme [first, last) de telle manière que tous les éléments pour lesquels le prédicat renvoie p true précéder les éléments pour lesquels prédicat retourne p false. Ordre relatif des éléments est conservé .

Original:

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.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Paramètres

first, last -

l'éventail d'éléments à réorganiser

Original:

the range of elements to reorder

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

p - prédicat unéaire qui retourne ​true

si l'élément doit être commandé avant autres éléments

Original:

if the element should be ordered before other elements

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

.

L'expression p(v) doit pouvoir être convertie à bool pour tout argument v de type (possiblement const) VT, où VT est le type de valeur de BidirIt, inconditionellement de value category, et ne doit pas modifier v. Ainsi, un type-paramètre VT&n'est pas permis ainsi que pour VT sauf pour VT un déplacement est équivalent à une copie (depuis C++11). ​

Type requirements
-BidirIt must meet the requirements of ValueSwappable and BidirectionalIterator.
-The type of dereferenced BidirIt must meet the requirements of MoveAssignable and MoveConstructible.

Retourne la valeur

Itérateur sur le premier élément du second groupe

Original:

Iterator to the first element of the second group

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Complexité

Exactement last-first applications du prédicat et à la plupart des swaps (last-first)*log(last-first) s'il n'y a pas assez de mémoire ou de nombre linéaire de swaps si la mémoire disponible est suffisante .

Original:

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.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Exemple

#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';
}

Résultat :

Voir aussi

divise une série d'éléments en deux groupes

Original:

divides a range of elements into two groups

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(fonction générique) [edit]