Разница между vector.back () и vector [vector.size () - 1]? - PullRequest
2 голосов
/ 04 февраля 2020

Есть ли разница между звонками vector.back() и vector[vector.size() - 1] с std::vector s?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020

vector.back() проще для чтения и записи. Кроме того, больше контейнеров предлагают c.back(), чем c[c.size() - 1], что важно для универсального кода c.

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

2 голосов
/ 04 февраля 2020

vector.back() - это один вызов функции и короче, чтобы написать: это проще. vector[vector.size() - 1] - это два вызова функций и вычитание, и более длинная запись: она более сложная.

По поведению они одинаковы для std::vector. Однако back является более общим c и может использоваться со всеми стандартными двунаправленными контейнерами (std::forward_list является единственным стандартным контейнером, который его не поддерживает). operator[] поддерживается только контейнерами с произвольным доступом.

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