Biblioteca de algoritmos C ++ - função copy_if ()
Descrição
A função C ++ std::algorithm::copy_if() copia um intervalo de elementos para um novo local se o predicado retornar verdadeiro para o valor.
Declaração
A seguir está a declaração para o cabeçalho da função std :: algorithm :: copy_if () std :: algorithm.
C ++ 11
template <class InputIterator, class OutputIterator, class UnaryPredicate>
OutputIterator copy_if(InputIterator first,InputIterator last,
OutputIterator result,UnaryPredicate pred);
Parâmetros
first - Insira iteradores nas posições iniciais da sequência pesquisada.
last - Insira iteradores nas posições finais da sequência pesquisada.
result - O iterador de saída para a posição inicial na nova sequência.
pred - Predicado unário que recebe um argumento e retorna um valor booleano.
Valor de retorno
Retorna um iterador apontando para o elemento que segue o último elemento escrito na sequência de resultados.
Exceções
Lança uma exceção se a atribuição de elemento ou uma operação em um iterador lança uma exceção.
Observe que os parâmetros inválidos causam um comportamento indefinido.
Complexidade de tempo
Linear na distância entre o primeiro e o último .
Exemplo
O exemplo a seguir mostra o uso da função std :: algorithm :: copy_if ().
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool predicate(int n) {
return (n %2 != 0);
}
int main(void) {
vector<int> v1 = {1, 2, 3, 4, 5};
vector<int> v2(3);
copy_if(v1.begin(), v1.end(), v2.begin(), predicate);
cout << "Following are the Odd numbers from vector" << endl;
for (auto it = v2.begin(); it != v2.end(); ++it)
cout << *it << endl;
return 0;
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
Following are the Odd numbers from vector
1
3
5