Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Класс forward_list: доступ к элементам
Для доступа к элементам списка предназначены следующие методы (обратите внимание: получить доступ к элементу списка по индексу нельзя и перебор элементов возможен только в прямом направлении):
front()
— возвращает ссылку на первый элемент. Метод позволяет как получить значение, так и изменить его. Прототипы метода:
reference front();
const_reference front() const;
Пример:
std::forward_list<int> arr = {1, 2, 3};
arr.front() = 55;
std::cout << arr.front() << std::endl; // 55
before_begin()
иcbefore_begin()
— возвращают обычный или константный итератор ссылающийся на позицию перед первым элементом списка. Используются для вставки элементов в начало списка и удаления элементов из начала списка. Разыменовывать эти итераторы нельзя. Прототипы методов:
iterator before_begin() noexcept;
const_iterator before_begin() const noexcept;
const_iterator cbefore_begin() const noexcept;
Пример вставки элемента в начало списка:
std::forward_list<int> arr = {10};
arr.insert_after(arr.before_begin(), 0); // В начало
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 0 10
begin()
,end()
,cbegin()
иcend()
— возвращают итераторы (см. разд. 16.1.1). Обратите внимание: методыrbegin()
,rend()
,crbegin()
иcrend()
в других классах возвращающие обратные итераторы в классеforward_list
отсутствуют. Перебирать элементы можно только в прямом направлении. Изменим и выведем значение первого элемента:
std::forward_list<int> arr = {1, 2, 3};
std::forward_list<int>::iterator it = arr.begin();
std::cout << *it << std::endl; // 1
*it = 0;
std::cout << *it << std::endl; // 0
Вместо методов begin()
и end()
можно воспользоваться одноименными функциями. Выведем значение первого элемента:
std::forward_list<int> arr = {1, 2, 3};
std::forward_list<int>::iterator it = std::begin(arr);
std::cout << *it << std::endl; // 1
Обратите внимание: итераторы односвязных списков не поддерживают операторы +
, -
и --
, для перемещения итератора нужно использовать оператор ++
или функцию advance()
. Пример доступа к третьему элементу списка:
std::forward_list<int> arr = {1, 2, 3, 4, 5};
std::forward_list<int>::iterator it = arr.begin();
std::advance(it, 2);
std::cout << *it << std::endl; // 3
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов