Está iterando a través del vector utilizando un iterador y copiando en una lista el método más óptimo para copiar. ¿Alguna recomendación?¿La mejor manera de copiar un vector a una lista en STL?
Respuesta
¿Por qué iterar y no utilizar el algoritmo de copia estándar?
std::copy(vector.begin(), vector.end(), std::back_inserter(list));
Usted puede tratar de usar las cosas más difíciles de la cabecera <algorithm>
, por ejemplo for_each
o copy
... sino que equivaldría a lo mismo, en mi opinión.
for_each equivaldrá a lo mismo. La copia puede sobrecargarse para proporcionar una mecánica de copia mucho más eficiente dependiendo de los iteradores proporcionados, y generalmente es el mecanismo preferido. – workmad3
Si usted está haciendo una nueva lista, usted puede tomar ventaja de un constructor que toma comenzar y terminar iteradores: Respuesta
std::list<SomeType> myList(v.begin(), v.end());
de Kasprzol es perfecto si usted tiene una lista existente desea anexar a.
Me gusta esta sugerencia para construir una nueva lista.
std::list<SomeType> myList(v.begin(), v.end());
Pero cuando se agrega a una lista existente, lo siguiente puede ser óptimo para pequeños conjuntos de datos. Por "óptimo", quiero decir que es más fácil recordar cómo hacerlo y más fácil de entender. (Estas son afirmaciones subjetivas, estoy seguro de que depende de la forma en que su cerebro está conectado.)
for (unsigned i=0; i<v.size(); i++) myList.push_back(v[i]);
Utilización de iteradores en vectores pueden ser demasiado pedante en muchos casos. La indexación simple generalmente funciona bien.
Otro hilo trata iteradores frente a índices (here). En ese hilo, la respuesta tomada básicamente prefiere iteradores porque son más genéricos. Pero si los vectores son el tipo de contenedor más comúnmente utilizado, creo que es razonable especializar este tipo de algoritmo simple.
list.assign(vector.begin(), vector.end());
Esto es útil, pero probablemente debería agregar algo que no sea código a esta respuesta para evitar una posible bandera VLQ. –
- 1. Copiar valores de mapa a vector en STL
- 2. ¿Cuál es la mejor manera de copiar una lista?
- 3. ¿Cómo copiar una cierta cantidad de caracteres de un archivo a un vector STL-way?
- 4. reducir la capacidad de un vector stl
- 5. TRAGO envoltura C++ para Python: la traducción de una lista de cadenas a un vector de STL de cadenas STL
- 6. ¿Cuál es la mejor manera de fundir una lista en un vector?
- 7. ¿El vector STL es una mejor versión de realloc?
- 8. convertir un vector a una lista
- 9. ¿Cómo ordenar un vector STL?
- 10. OpenMP y STL vector
- 11. vector STL frente a borrado de mapa
- 12. ¿la mejor manera de convertir una matriz de cadenas a un vector?
- 13. Ordenando un vector STL en dos valores
- 14. convert vector a la lista
- 15. Tamaño de vector de STL
- 16. Posición en Vector utilizando STL
- 17. ¿Puedo inicializar un vector STL con 10 del mismo número entero en una lista de inicializadores?
- 18. C++ cómo copiar un mapa en un vector
- 19. La forma más rápida de escribir un vector STL grande en un archivo usando STL
- 20. equivalente Python para C++ STL contenedores vector/Lista
- 21. ¿La mejor manera de dividir un vector en dos matrices más pequeñas?
- 22. ¿Cómo almaceno arreglos en una lista STL?
- 23. ¿Un buen C equivalente al vector STL?
- 24. vector de java a la lista de arrays
- 25. STL thrust multiple vector transform?
- 26. T-SQL: ¿la mejor manera de copiar datos de jerarquía?
- 27. ¿Hay una manera fácil de copiar un iterador en una lista en Java?
- 28. Contenedores STL: diferencia entre vector, lista y deque
- 29. Cómo exponer la lista STL sobre el límite de DLL?
- 30. ¿Cómo establecer un rango de elementos en un vector stl a un valor particular?
Debería ser std :: copy en lugar de stl :: copy, pero de lo contrario este es el método preferido cuando se utilizan iteradores para copiar. – workmad3