Метод end
Метод end возвращает итератор, который указывает на
элемент, следующий за последним элементом вектора. Важно
понимать, что этот итератор не указывает на реальный
элемент - он используется как маркер конца диапазона.
Метод не принимает параметров и не изменяет сам вектор.
Чаще всего end применяется в паре с методом
begin для перебора элементов вектора в цикле.
Синтаксис
vec.end()
Пример
Давайте выведем все элементы вектора, используя
итератор, полученный из метода 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 << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте найдём сумму всех элементов вектора, перебирая
их от begin до end:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
int sum = 0;
for (auto it = vec.begin(); it != vec.end(); ++it) {
sum += *it;
}
cout << sum << endl;
return 0;
}
Результат выполнения кода:
15
Пример
Давайте проверим, что итератор end не указывает
на реальный элемент, сравнив его с итератором на последний
элемент вектора:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto last = vec.end() - 1;
cout << "Last element: " << *last << endl;
cout << "End != Last: " << (vec.end() != last) << endl;
return 0;
}
Результат выполнения кода:
"Last element: 5"
"End != Last: 1"