доступ к вектору со спины - PullRequest
5 голосов
/ 17 июня 2010

Есть ли способ получить доступ к элементу вектора, начиная со спины?Я хочу получить доступ ко второму последнему элементу. В настоящее время я использую следующее для достижения этой цели:

myVector[myVector.size() - 2]

, но это кажется медленным и неуклюжим, есть ли лучший способ?

Ответы [ 3 ]

7 голосов
/ 17 июня 2010

Вряд ли будет быстрее, но это может выглядеть лучше:

myVector.end()[-2]
5 голосов
/ 17 июня 2010

Ну, вы всегда можете использовать vector :: back ().Если вы хотите выполнить итерацию со спины, используйте reverse_iterator:

vector<something>::reverse_iterator iter = v.rbegin();
iter++; //Iterates backwards

Векторы созданы для быстрого произвольного доступа, так что ваш путь тоже в порядке.Доступ к элементу вектора по любому индексу является операцией O (1).

0 голосов
/ 17 июня 2010

Ваш путь совершенно верный и довольно быстрый, за исключением того, что вы должны проверить myVector.size() > 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...