Es muy molesto que copy_if
no esté en C++. ¿Alguien sabe si será en C++ 0x?¿están agregando copy_if a C++ 0x?
Respuesta
Como C++ 0x aún no está finalizado, solo puede echar un vistazo a la más reciente draft.
raptor dulce Jesús, ahí está. – rlbond
Por ahora, C++ 0x está bastante bien finalizado, y el borrador más reciente está muy cerca de lo que será la versión final. –
Acepto, estaba leyendo que gcc 4.4 ya tiene algo de apoyo para el borrador. –
Mientras tanto, no es muy difícil de hacer su propio copy_if()
usando remove_copy_if()
:
#include <functional>
struct my_predicate : std::unary_function<my_arg_type, bool> {
bool operator()(my_arg_type const& x) const { ... }
};
// To perform "copy_if(x, y, z, my_predicate())", write:
remove_copy_if(x, y, z, std::not1(my_predicate()));
Usando not1()
requiere su clase de predicados para suministrar un tipo anidado, argument_type
, que identifica el tipo del argumento - como como se muestra arriba, una forma conveniente de hacerlo es derivar de unary_function<T, U>
, donde T
es el tipo de argumento.
simplemente para la corrección, en caso de que alguien googles su/su camino a esta pregunta, se debe mencionar que ahora (en C++ 11 y posteriores) existe un algoritmocopy if. Se comporta como se esperaba (copia los elementos en un rango, para los cuales algún predicado devuelve verdadero, a otro rango).
Un caso de uso típico sería
std::vector<int> foo{ 25, 15, 5, -5, -15 };
std::vector<int> bar;
// copy only positive numbers:
auto it = std::copy_if (foo.begin(), foo.end(), std::back_inserter(bar),
[](int i){return !(i<0);
});
- 1. Transición a C++ 0x desde C++ 98
- 2. ¿Por qué no hay ningún algoritmo std :: copy_if?
- 3. C++ 0x lambda capturas
- 4. ¿Has empezado a usar C++ 0x?
- 5. ¿Pasó `#pragma una vez` a C++ 0x?
- 6. C++ 0x sobrecarga Lambda
- 7. C++ 0x: Memoria ordenar
- 8. C + + 0x subprocesamiento
- 9. C++ 0x - ¿Cuándo?
- 10. "Backporting" nullptr a C++ - programas pre-C++ 0x
- 11. C++ 0x con Qt Creator
- 12. Usando unordered_map de C++ 0x
- 13. Soporte Unicode en C++ 0x
- 14. función asíncrona llamada C++ 0x
- 15. función "id" en C++ 0x
- 16. CMake clang y C++ 0x
- 17. C++ 0x interrupción de hilo
- 18. Usando __thread en C++ 0x
- 19. Se están agregando barras invertidas en mi cookie en Python
- 20. C++ 0x expresiones regulares en GCC
- 21. C++ 0x Tuplas Almacenar elementos al revés
- 22. Plantilla automática hecha a mano (sin usar C++ 0x)
- 23. ¿Por qué no se agregó el rendimiento a C++ 0x?
- 24. agregando borde a jcheckbox
- 25. agregando KVO a UITableViewCell
- 26. agregando JLayeredPane a JPanel
- 27. C++ 0x compila pero eclipse errores de editor incluso con -gnu ++ 0x descubrimiento
- 28. Tipo subyacente de una enumeración de C++ en C++ 0x
- 29. C++ 0x Constructor Peer en VC2010
- 30. ¿Es legal esta optimización C++ 0x?
Fwiw, se ha dejado fuera de la norma actual por error :-) – dirkgently