std::partition_copy
Da cppreference.com.
|
|
Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.
La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
<metanoindex/>
<tbody> </tbody>| Elemento definito nell'header <algorithm>
|
||
template< class InputIt, class OutputIt1, class OutputIt2, class UnaryPredicate > std::pair<OutputIt1, OutputIt2> partition_copy(InputIt first, InputIt last, OutputIt1 d_first_true, OutputIt2 d_first_false, UnaryPredicate p); |
(dal C++11) | |
Copia gli elementi che soddisfano la
p predicato dal [first, last) gamma all'inizio gamma a d_first_true, e copia gli elementi che non soddisfano p all'inizio gamma a d_first_false.Original:
Copies the elements that satisfy the predicate
p from the range [first, last) to the range beginning at d_first_true, and copies the elements that do not satisfy p to the range beginning at d_first_false.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Parametri
| first, last | - | la gamma di elementi da ordinare
Original: the range of elements to sort The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| d_first_true | - | l'inizio del campo di uscita per gli elementi che soddisfano p
Original: the beginning of the output range for the elements that satisfy p The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| d_first_false | - | l'inizio del campo di uscita per gli elementi che non soddisfano p
Original: the beginning of the output range for the elements that do not satisfy p The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| p | - | unary predicate which returns true se l'elemento deve essere posto in d_first_true . Original: if the element should be placed in d_first_true The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. The signature of the predicate function should be equivalent to the following:
The signature does not need to have |
| Type requirements | ||
-InputIt must meet the requirements of InputIterator.
| ||
-OutputIt1 must meet the requirements of OutputIterator.
| ||
-OutputIt2 must meet the requirements of OutputIterator.
| ||
Valore di ritorno
Un
pair costruito dal iteratore alla fine del campo d_first_true e l'iteratore alla fine del campo d_first_false.Original:
A
pair constructed from the iterator to the end of the d_first_true range and the iterator to the end of the d_first_false range.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Complessità
Esattamente
distance(first, last) applicazioni di p.Original:
Exactly
distance(first, last) applications of p.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Possibile implementazione
template<class InputIt, class OutputIt1,
class OutputIt2, class UnaryPredicate>
std::pair<OutputIt1, OutputIt2>
partition_copy(InputIt first, InputIt last,
OutputIt1 d_first_true, OutputIt2 d_first_false,
UnaryPredicate p)
{
while (first != last) {
if (p(*first)) {
*d_first_true = *first;
++d_first_true;
} else {
*d_first_false = *first;
++d_first_false;
}
++first;
}
return std::pair<OutputIt1, OutputIt2>(d_first_true, d_first_false);
}
|
Esempio
#include <iostream>
#include <algorithm>
#include <utility>
int main()
{
int arr [10] = {1,2,3,4,5,6,7,8,9,10};
int true_arr [5] = {0};
int false_arr [5] = {0};
std::partition_copy(std::begin(arr), std::end(arr), std::begin(true_arr),std::begin(false_arr),
[] (int i) {return i > 5;});
std::cout << "true_arr: ";
for (auto it = std::begin(true_arr); it != std::end(true_arr); ++it) {
std::cout << *it << ' ';
}
std::cout << '\n';
std::cout << "false_arr: ";
for (auto it = std::begin(false_arr); it != std::end(false_arr); ++it) {
std::cout << *it << ' ';
}
std::cout << '\n';
return 0;
}
Output:
true_arr: 6 7 8 9 10
false_arr: 1 2 3 4 5
Vedi anche
divide una serie di elementi in due gruppi 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. (funzione di modello) | |
divide gli elementi in due gruppi, mantenendo l'ordine relativo Original: divides elements into two groups while preserving their relative order The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione di modello) | |