Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Класс forward_list: удаление элементов
Для удаления элементов предназначены следующие методы:
pop_front()
— удаляет первый элемент. Прототип метода:
void pop_front();
Пример:
std::forward_list<int> arr = {1, 2, 3};
arr.pop_front();
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 2 3
erase_after()
— удаляет один элемент или элементы из диапазона. Прототипы метода:
iterator erase_after(const_iterator pos);
iterator erase_after(const_iterator before, const_iterator last);
Первый прототип удаляет один элемент, расположенный после элемента на который указывает итератор. Обратите внимание: удаляет не текущий элемент, а следующий за ним. Второй прототип удаляет элементы из диапазона, ограниченного итераторами before
и last
, не удаляя элементы, на которые ссылаются итераторы:
std::forward_list<int> arr = {1, 2, 3, 4, 5};
arr.erase_after(arr.begin()); // Удаляем второй элемент
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 3 4 5
std::forward_list<int>::iterator it1 = arr.begin();
std::forward_list<int>::iterator it2 = arr.begin();
std::advance(it1, 1); // Перемещаем итератор
std::advance(it2, 3); // Перемещаем итератор
arr.erase_after(it1, it2);
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 3 5
clear()
— удаляет все элементы. Прототип метода:
void clear() noexcept;
Пример:
std::forward_list<int> arr = {1, 2, 3, 4, 5};
arr.clear();
std::cout << std::distance(arr.begin(), arr.end())
<< std::endl; // 0
remove()
— удаляет все элементы, имеющие значениеval
. Прототип метода:
void remove(const value_type &val);
Пример:
std::forward_list<int> arr = {0, 1, 1, 1, 2, 1};
arr.remove(1);
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 0 2
remove_if()
— удаляет элементы, для которых унарный функторpred
вернул значениеtrue
. Прототип метода:
template<typename _Predicate>
void remove_if(_Predicate pred);
Удалим все элементы, значения которых меньше двух:
std::forward_list<int> arr = {0, 1, 1, 1, 2, 1, 3, 4};
arr.remove_if( [](int a){ return a < 2; } );
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 2 3 4
unique()
— удаляет повторяющиеся элементы. Прототипы метода:
void unique();
template<typename _BinaryPredicate>
void unique(_BinaryPredicate pred);
Первый прототип удаляет повторяющиеся элементы, расположенные рядом. Чтобы список состоял только из уникальных элементов необходимо предварительно отсортировать список. Второй прототип передает два элемента бинарному функтору. Если функтор вернет значение true
, то элемент будет удален. Пример:
std::forward_list<int> arr = {0, 1, 1, 1, 2, 1, 1, 1};
arr.unique();
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 0 1 2 1
arr = {0, 1, 1, 1, 2, 1, 1, 1};
arr.unique( [](int a, int b){ return a == b; } );
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 0 1 2 1
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов