В C ++ все контейнеры реализуют size
метод постоянной сложности, поэтому если range
вы рассмотрите контейнер, то не нужно для повторного изобретения колеса.
Однако вы также можете использовать std::distance
, если хотите определить количество элементов из определенного диапазона, например:
std::vector<int> v{ 3, 1, 4 };
std::cout << std::distance(v.begin(), v.end() << std::endl; // 3
Если вы посмотрите на возможная реализация std::distance
, это что-то вроде
while (first != last) {
++first;
++n;
}
, где first
и last
- начальная и конечная точка вашего диапазона, а n
- простой счетчик.