new - vector de último elemento de c++
vector c++ example (7)
Tengo un vector vec de estructuras. Tal estructura tiene elementos int a, int b, int c . Me gustaría asignarle algo de int var al elemento c, desde la última estructura en un vector. Por favor, ¿pueden proporcionarme esta solución simple? Voy a circular en línea así:
var = vec.end().c;
La respuesta inmediata a su pregunta sobre cómo obtener acceso al último elemento de un vector se puede lograr utilizando el miembro back()
. Como:
int var = vec.back().c;
Nota: Si existe la posibilidad de que su vector esté vacío, una llamada a back()
provoca un comportamiento indefinido. En tales casos, puede verificar el estado vacío de su vector antes de usar back()
usando el miembro empty()
:
if (!vec.empty())
var = vec.back().c;
Es probable que uno de estos dos métodos sea aplicable para sus necesidades.
Pruebe esto: var = vec.back().c;
También puedes modificar tu código como:
var = vec.rbegin()->c;
¡En ambas versiones primero asegúrate de que el vector no esté vacío!
Puede usar la función std:vector<T>:back()
, por ejemplo vec.back().c
Ver http://www.cplusplus.com/reference/vector/vector/back/
Simplemente puede usar de back
ya que devuelve una referencia al último elemento.
var = vec.back().c
Use back()
:
var = vec.back().c;
var = vec.back().c;
es lo que quieres
end()
devuelve el iterador (no un elemento) pasado el vector. back()
devuelve una referencia al último elemento. También tiene un front()
contraparte front()
.
vec.end()
es un iterador que refiere la ubicación posterior al vector. Como tal, no puede deferencia y acceder a los valores de los miembros. vec.end()
iterador vec.end()
siempre es válido, incluso en un vector vacío (en cuyo caso vec.end() == vec.begin()
)
Si desea acceder al último elemento de su vector, use vec.back()
, que devuelve una referencia (y no un iterador). Sin embargo, tenga en cuenta que si el vector está vacío, dará lugar a un comportamiento indefinido; muy probablemente un accidente.