Поле вектора последнего вектора С++
У меня есть вектор vec структур. Такая структура имеет элементы int a, int b, int c. Я хотел бы присвоить некоторому int var элемент c, из последней структуры в векторе. Пожалуйста, вы можете предоставить мне это простое решение? Я иду в линию следующим образом:
var = vec.end().c;
Ответы
Ответ 1
Непосредственный ответ на ваш вопрос о том, чтобы получить доступ к последнему элементу в векторе, можно выполнить с помощью члена back()
. Например:
int var = vec.back().c;
Примечание. Если есть вероятность, что ваш вектор пуст, такой вызов back()
вызывает поведение undefined. В таких случаях вы можете проверить свое пустое состояние вектора до использования back()
с помощью члена empty()
:
if (!vec.empty())
var = vec.back().c;
Вероятно, один из этих двух методов будет применим для ваших нужд.
Ответ 2
vec.end()
- это итератор, который ссылается на местоположение после конца в векторе. Таким образом, вы не можете уважать его и получать доступ к значениям членов. Итератор vec.end()
всегда действителен, даже в пустом векторе (в этом случае vec.end() == vec.begin()
)
Если вы хотите получить доступ к последнему элементу вашего вектора, используйте vec.back()
, который возвращает ссылку (а не итератор). Однако обратите внимание, что если вектор пуст, это приведет к поведению undefined; скорее всего, сбой.
Ответ 3
Используйте back()
:
var = vec.back().c;
Ответ 4
var = vec.back().c;
- это то, что вы хотите.
end()
возвращает итератор (не элемент), прошедший конец вектора. back()
возвращает ссылку на последний элемент. Он имеет аналог front()
.
Ответ 5
Попробуйте следующее: var = vec.back().c;
Также вы можете изменить свой код следующим образом:
var = vec.rbegin()->c;
В обеих версиях сначала убедитесь, что вектор не пуст!
Ответ 6
Вы можете просто использовать back
, поскольку он возвращает ссылку на последний элемент.
var = vec.back().c
Ответ 7
Вы можете использовать функцию std:vector<T>:back()
, например. vec.back().c
.
См. http://www.cplusplus.com/reference/vector/vector/back/