Подтвердить что ты не робот

Поле вектора последнего вектора С++

У меня есть вектор vec структур. Такая структура имеет элементы int a, int b, int c. Я хотел бы присвоить некоторому int var элемент c, из последней структуры в векторе. Пожалуйста, вы можете предоставить мне это простое решение? Я иду в линию следующим образом:

var = vec.end().c;
4b9b3361

Ответ 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