c++ vector último elemento campo
Tengo un vector vec de estructuras. Tal estructura tiene elementos int a, int b, int c. Me gustaría asignar a algunos int var el elemento c, de la última estructura en un vector. Por favor, ¿puede proporcionarme esta solución simple? Voy en círculo en línea de esta manera:
var = vec.end().c;
7 answers
La respuesta inmediata a su pregunta en cuanto a obtener acceso al último elemento en un vector se puede lograr usando el miembro back()
. Tales como:
int var = vec.back().c;
Nota: Si existe la posibilidad de que su vector esté vacío, tal llamada a back()
causa un comportamiento indefinido. En tales casos, puede verificar el estado vacío de su vector antes de de usar back()
utilizando el miembro empty()
:
if (!vec.empty())
var = vec.back().c;
Probablemente uno de estos dos métodos será aplicable a sus necesidades.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 10:28:24
vec.end()
es un iterador que se refiere a la ubicación posterior al final en el vector. Como tal, no puede respetarlo y acceder a los valores de los miembros. vec.end()
el iterador es siempre 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, esto conducirá a un comportamiento indefinido; lo más probable es un bloqueo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 09:44:46
Uso back()
:
var = vec.back().c;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-12 19:48:48
var = vec.back().c;
es lo que quieres.
end()
devuelve el iterador (no un elemento) pasado el final del vector. back()
devuelve una referencia al último elemento. Tiene una contraparte front()
también.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 09:40:56
Prueba esto: var = vec.back().c;
También puede modificar su código como:
var = vec.rbegin()->c;
En ambas versiones primero asegúrese de que el vector no está vacío!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 09:41:25
Simplemente puede usar back
ya que devuelve una referencia al último elemento.var = vec.back().c
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 09:41:47
Puede usar la función std:vector<T>:back()
, por ejemplo vec.back().c
.
Véase http://www.cplusplus.com/reference/vector/vector/back /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 09:42:45