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.