Deseo insertar en un vector C++ en una posición conocida. Sé que la biblioteca C++ tiene una función insert() que toma una posición y el objeto a insertar, pero el tipo de posición es un iterador. Deseo insertar en el vector como lo insertaría en una matriz, usando un índice específico.C++ insertar en el vector en la posición conocida
Respuesta
Mire ese rastro de depuración. Lo último que se ejecuta es std :: copy (__ first = 0x90c6fa8, __last = 0x90c63bc, __result = 0x90c6878). Mirando hacia atrás a lo que lo causó, llamó a insertar dando la posición para insertar como 0x90c63bc. std :: copy copia el rango [primero, último) al resultado, que debe tener espacio para el último - primer elemento. Esta llamada tiene el último < primero, que es ilegal (!), Así que supongo que la posición que está dando para insertar es incorrecta. ¿Estás seguro de que vnum no se ha desbordado en algún punto de la línea? En BGF con esa traza muestra, se debe ejecutar
bastidor 10
vNUM de impresión
comprobar. De hecho, si no acaba de abreviar en su pregunta, acabo de encontrar su error. Su segunda línea es:
new_mesh->Face(face_loc)->vertices.insert(vertices.begin()+vnum+1, new_vertices[j]);
Debería haber sido:
new_mesh->Face(face_loc)->vertices.insert(new_mesg->Face(face_loc)->vertices.begin()+vnum+1, new_vertices[j]);
La primera línea da el punto de inserción en relación con el inicio de algunas otros llamados vértices variables, no el que usted quiere insertar en.
Siempre es agradable para envolver estas cosas:
template <typename T>
T& insert_at(T& pContainer, size_t pIndex, const T::value_type& pValue)
{
pContainer.insert(pContainer.begin() + pIndex, pValue);
return pContainer;
}
Eso debería hacerlo. Ahora hay una respuesta eliminada que dice que puedes construir un iterador a partir de un índice, pero nunca antes lo había visto. Si eso es cierto, ese es definitivamente el camino a seguir; Lo estoy buscando ahora.
Esto debería hacer lo que quiera.
vector<int>myVec(3);
myVec.insert(myVec.begin() + INTEGER_OFFSET, DATA);
Tenga en cuenta que los iteradores pueden ser invalidados cuando se reasignan vectores. Por favor vea esto site.
EDITAR: No estoy seguro de por qué la otra respuesta desapareció ... pero otra persona mencionó algo a lo largo de las líneas de:
myVec.insert(INDEX, DATA);
Si no recuerdo mal, esto debe estar muy bien.
Gracias por descubrir mi error ... mi hábito de poner las cosas en nulo parece haberme ganado. También se corrigió el error en el código. – nevets1219
cuando hago esto new_mesh-> Face (face_loc) -> vertices [vnum] = new_vertices [new_vertices.size() - 1]; new_mesh-> Face (face_loc) -> vertices.insert (vertices.begin() + vnum + 1, new_vertices [j]), aparece un error seg después de la inserción. Aquí, j = 0, vnum = 0, vértices es std: tipo de vector – myx
@myx: ¿Hay alguna razón por la que no estés usando 'std :: vector'? – GManNickG
- 1. insertar un elemento en una posición específica de un vector
- 2. Insertar vector de valor en el mapa en C++
- 3. Posición en Vector utilizando STL
- 4. Insertar cadena en la posición especificada
- 5. Posición en vector basado en la coincidencia aproximada
- 6. ¿Cómo obtener el elemento en Vector usando la posición especificada en C++?
- 7. ¿Cómo insertar elementos en un vector?
- 8. C++ Algoritmo cinemático inverso/biblioteca que incluye el método para IK cuando la posición de varios nodos en cadena conocida
- 9. Memset en el vector C++
- 10. PHP SimpleXML: insertar nodo en cierta posición
- 11. Insertar cadena en la posición del cursor de UITextField
- 12. vector :: clear en C++
- 13. Insertar un carácter en una cadena en una posición determinada
- 14. cómo insertar texto en cualquier posición del cursor en uitextview?
- 15. ¿Cómo replicar el vector en c?
- 16. ¿Insertar valor en una cadena en una posición determinada?
- 17. Insertar texto en el cuadro de texto de WPF en la posición de intercalación
- 18. ¿Cómo insertar un elemento en la posición seleccionada en el documento HTML?
- 19. columna de inserción de datos C# en la posición 0
- 20. ¿Cómo insertar un elemento duplicado en un vector?
- 21. Cómo insertar el código CIL en C#
- 22. Obteniendo la posición del mouse en C#
- 23. OCR para la fuente conocida
- 24. Actualizar la lista RVM conocida
- 25. La mejor forma de implementar estas 3 clases en C#: Vector, Dirección (unidad de vector), Punto
- 26. Reutilizando un vector en C++
- 27. ¿Cómo encuentro una posición de elemento en std :: vector?
- 28. Cómo insertar un bloque de espacios en blanco comenzando en la posición del cursor en vi?
- 29. Insertar texto después de la posición del cursor en el texto es
- 30. C++ vector con la herencia
En realidad, mi método es un poco redundante. Luca señaló que puedes usar el índice fácilmente sin tener que preocuparte por recuperar el iterador. – nevets1219
No puede - no hay un método de 'inserción' que adopte una posición, las tres sobrecargas toman iteradores, que es probablemente la razón por la que la otra persona borró su respuesta. –
tenga en cuenta que insertar en el medio de un vector es bastante lento, si lo hace mucho, debería considerar usar otro contenedor –