Функция distance
Функция distance вычисляет расстояние между двумя итераторами,
то есть количество шагов от первого итератора до второго.
В первый параметр передаётся итератор, обозначающий начало,
а во второй - итератор, обозначающий конец.
Функция возвращает целое число - количество элементов в диапазоне
[first, last). Для итераторов произвольного доступа
расстояние вычисляется как разность, а для остальных -
путём последовательного увеличения первого итератора до достижения второго.
Синтаксис
#include <iterator>
std::distance(first, last);
Пример
Давайте вычислим расстояние между началом и концом вектора:
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
cout << distance(vec.begin(), vec.end()) << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Давайте вычислим расстояние от начала вектора до третьего элемента
(итератор на элемент со значением 3):
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2;
cout << distance(vec.begin(), it) << endl;
return 0;
}
Результат выполнения кода:
2
Пример
Давайте вычислим расстояние между двумя итераторами, указывающими на элементы вектора, в обратном порядке:
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto first = vec.begin() + 1;
auto last = vec.begin() + 4;
cout << distance(first, last) << endl;
return 0;
}
Результат выполнения кода:
3
Смотрите также
-
функция
advance,
которая перемещает итератор на заданное число позиций -
функция
next,
которая возвращает итератор, смещённый вперёд на заданное число позиций -
функция
prev,
которая возвращает итератор, смещённый назад на заданное число позиций -
функция
begin,
которая возвращает итератор на первый элемент контейнера