Способ определения размера контейнера - PullRequest
3 голосов
/ 24 июля 2010

Есть ли другой способ определить размер контейнера, кроме:

//those are valid iterators from a container
BidIt begin;
BidIt end;
std::size_t size = 0;

while (begin != end)
{//Here throug iterating I'm getting adventually the correct size
   ++size;
   ++begin;
}

но мне интересно, могу ли я проверить размер этого контейнера, например, вычитая адреса этих итераторов или что-то в этом роде.
Спасибо за любую помощь.

Ответы [ 2 ]

5 голосов
/ 24 июля 2010

Вы можете использовать функцию distance .Обратите внимание, что если ваши итераторы , а не RandomAccessIterators , функция расстояния будет в основном использовать тот же метод вычисления расстояния, которое вы показали.

0 голосов
/ 24 июля 2010

Кроме того, вы можете добавить дополнительный тип size к типу BidIt и обновлять его всякий раз, когда над контейнером выполняется операция вставки или удаления, а также метод получения для получения размера.

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