estándar::eliminar
Se define en la biblioteca <algorithm>. Elimina el valor del rango. Transforma el rango [primero, último) en un rango con todos los elementos que se comparan igual a val eliminados y devuelve un iterador al nuevo final de ese rango.
- La función no puede alterar las propiedades del objeto que contiene el rango de elementos (es decir, no puede alterar el tamaño de una array o un contenedor ).
- El orden relativo de los elementos no eliminados se conserva, mientras que los elementos entre el iterador devuelto y el último se dejan en un estado válido pero no especificado.
- La función usa operator== para comparar los elementos individuales con val.
Plantilla de función:
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val) first,last : The range used is [first,last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last. val : Value to be removed. Return value : An iterator to the element that follows the last element not removed. The range between first and this iterator includes all the elements in the sequence that do not compare equal to val.
Ejemplo:
Input : 10 20 30 30 20 10 10 20 Output : 10 30 30 10 10 // Value removed is 20.
estándar::eliminar_si
Transforma el rango [primero, último) en un rango con todos los elementos para los que pred devuelve verdadero eliminados y devuelve un iterador al nuevo final de ese rango.
Plantilla de función:
ForwardIterator remove_if (ForwardIterator first, ForwardIterator last, UnaryPredicate pred); pred Unary function that accepts an element in the range as argument, and returns a value convertible to bool. The value returned indicates whether the element is to be removed (if true, it is removed). The function shall not modify its argument. This can either be a function pointer or a function object.
Ejemplo:
Input : 1 2 3 4 5 6 7 8 9 10 Output : 2 4 6 8 10 // Odd elements removed.
CPP
// CPP program to illustrate // std::remove and std::remove_if // algorithm #include <bits/stdc++.h> // Function to check whether // the element is odd or not. bool IsOdd(int i) { return ((i % 2) == 1); } // Driver code int main() { std ::vector<int> vec1{ 10, 20, 30, 30, 20, 10, 10, 20 }; std ::vector<int> vec2{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // Print original vector std ::cout << "Original vector : "; for (int i = 0; i < vec1.size(); i++) std ::cout << " " << vec1[i]; std ::cout << "\n"; // Iterator that store the position of last element std ::vector<int>::iterator pend; // std ::remove function call pend = std ::remove(vec1.begin(), vec1.end(), 20); // Print the vector std ::cout << "After remove : "; for (std ::vector<int>::iterator p = vec1.begin(); p != pend; ++p) std ::cout << ' ' << *p; std ::cout << '\n'; // Print original vector std ::cout << "\nOriginal vector : "; for (int i = 0; i < vec2.size(); i++) std ::cout << " " << vec2[i]; std ::cout << "\n"; // std ::remove_if function call pend = std ::remove_if(vec2.begin(), vec2.end(), IsOdd); // the same of the above can be done using lambda // function in 1 line pend = std ::remove_if( vec2.begin(), vec2.end(), [](int i) { return ((i % 2) == 1); }); // Print the vector std ::cout << "After remove_if : "; for (std ::vector<int>::iterator q = vec2.begin(); q != pend; ++q) std ::cout << ' ' << *q; std ::cout << '\n'; return 0; }
Producción:
Original vector : 10 20 30 30 20 10 10 20 After remove : 10 30 30 10 10 Original vector : 1 2 3 4 5 6 7 8 9 10 After remove_if : 2 4 6 8 10
Este artículo es una contribución de Sachin Bisht . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA