Функция end
Функция end возвращает итератор, который указывает
на позицию после последнего элемента контейнера.
Такой итератор часто называют «past-the-end». Важно понимать,
что разыменовывать этот итератор нельзя - он не указывает
на реальный элемент. Функция не принимает параметров
и работает с любыми стандартными контейнерами: векторами,
списками, множествами, а также с массивами и строками.
Чаще всего end используется в паре с begin
для обхода диапазона элементов.
Синтаксис
container.end()
Пример
Давайте обойдём вектор с помощью цикла for,
используя begin и end:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.begin(); it != vec.end(); ++it)
{
cout << *it << " ";
}
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте проверим, пустой ли вектор, сравнив
итераторы begin и end:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {};
if (vec.begin() == vec.end())
{
cout << "empty" << endl;
}
else
{
cout << "not empty" << endl;
}
return 0;
}
Результат выполнения кода:
"empty"
Пример
Давайте найдём последний элемент вектора, используя
функцию prev вместе с end:
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto last = prev(vec.end());
cout << *last << endl;
return 0;
}
Результат выполнения кода:
5