Функция cbegin
Функция cbegin возвращает константный итератор
(const_iterator), указывающий на первый элемент
контейнера. В отличие от обычного begin, итератор,
полученный через cbegin, запрещает изменение
элементов, на которые он указывает. Это полезно, когда
нужно гарантировать, что данные не будут случайно
изменены при обходе.
Функция не принимает параметров и доступна для всех
стандартных контейнеров: vector, string,
array, list, map и других.
Синтаксис
container.cbegin()
Пример
Давайте получим константный итератор на начало вектора и выведем первый элемент:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.cbegin();
cout << *it << endl;
return 0;
}
Результат выполнения кода:
1
Пример
Давайте переберем все элементы вектора с помощью
константных итераторов, полученных через cbegin
и cend:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.cbegin(); it != vec.cend(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Попытка изменить значение через константный итератор
приведет к ошибке компиляции. Давайте убедимся, что
через cbegin можно только читать данные:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcde";
auto it = str.cbegin();
// *it = 'z'; // ошибка компиляции
cout << *it << endl;
return 0;
}
Результат выполнения кода:
"a"