Biblioteca de algoritmos C ++ - Función copy_if ()

Descripción

La función C ++ std::algorithm::copy_if() copia un rango de elementos en una nueva ubicación si el predicado devuelve verdadero para el valor.

Declaración

A continuación se muestra la declaración para la función std :: algorítm :: copy_if () del encabezado std :: algorítmico.

C ++ 11

template <class InputIterator, class OutputIterator, class UnaryPredicate>
OutputIterator copy_if(InputIterator first,InputIterator last,
   OutputIterator result,UnaryPredicate pred);

Parámetros

  • first - Ingrese iteradores a las posiciones iniciales de la secuencia buscada.

  • last - Ingrese iteradores a las posiciones finales de la secuencia buscada.

  • result - Salida del iterador a la posición inicial en la nueva secuencia.

  • pred - Predicado unario que toma un argumento y devuelve un valor bool.

Valor devuelto

Devuelve un iterador que apunta al elemento que sigue al último elemento escrito en la secuencia de resultados.

Excepciones

Lanza una excepción si la asignación de elementos o una operación en un iterador arroja una excepción.

Tenga en cuenta que los parámetros no válidos provocan un comportamiento indefinido.

Complejidad del tiempo

Lineal en la distancia entre el primero y el último .

Ejemplo

El siguiente ejemplo muestra el uso de la función std :: algorítm :: 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;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Following are the Odd numbers from vector
1
3
5