Как вставить элементы в C ++ STL List?
В этой статье рассматриваются аспекты удаления в списке STL.
- Использование list :: erase () : целью этой функции является удаление элементов из списка. С помощью этой функции можно удалить один или несколько смежных элементов в диапазоне. Эта функция принимает 2 аргумента: начальный итератор и конечный итератор.
Временная сложность: O (n) где (n — размер списка).// C ++ код для демонстрации работы erase ()
#include<iostream>
#include<list> // for list operations
using
namespace
std;
int
main()
{
// инициализируем список целых чисел
list<
int
> list1={10,15,20,25,30,35};
// объявляем список итераторов
list<
int
>::iterator it = list1.begin();
list<
int
>::iterator it1 = list1.begin();
// увеличиваем позиции итераторов
advance(it,2);
advance(it1,5);
// печать оригинального списка
cout <<
"The original list is : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
// используя erase () чтобы стереть отдельный элемент
// стирает 20
list1.erase(it);
// список после удаления 1 элемента
cout <<
"The list after deleting 1 element using erase() : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
it = list1.begin();
// увеличиваем позиции итераторов
advance(it,2);
// используя erase (), чтобы стереть несколько элементов
// стирает 25,30
list1.erase(it,it1);
// список после удаления нескольких элементов
cout <<
"The list after deleting multiple elements using erase() : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
}
Выход:
The original list is : 10 15 20 25 30 35 The list after deleting 1 element using erase() : 10 15 25 30 35 The list after deleting multiple elements using erase() : 10 15 35
- Используя list :: pop_front () и list :: pop_back () :
- pop_back () : эта функция удаляет последний элемент из списка. Это уменьшает размер списка на 1.
Сложность времени: O (1) - pop_front () : эта функция удаляет первый элемент из списка и сдвигает последующие элементы. Это уменьшает размер списка на 1.
Сложность времени: O (1)
// C ++ код для демонстрации работы pop_front ()
// и pop_back ()
#include<iostream>
#include<list> // for list operations
using
namespace
std;
int
main()
{
// инициализируем список целых чисел
list<
int
> list1={10,15,20,25,30,35};
// печать оригинального списка
cout <<
"The original list is : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
// использование pop_front () для удаления первого элемента списка
// всплывает 10
list1.pop_front();
// список после удаления первого элемента
cout <<
"The list after deleting first element using pop_front() : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
// используя pop_back () чтобы стереть последний элемент списка
// всплывает 35
list1.pop_back();
// список после удаления последнего элемента
cout <<
"The list after deleting last element using pop_back() : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
}
Выход:
The original list is : 10 15 20 25 30 35 The list after deleting first element using pop_front() : 15 20 25 30 35 The list after deleting last element using pop_back() : 15 20 25 30
- pop_back () : эта функция удаляет последний элемент из списка. Это уменьшает размер списка на 1.
- Используя remove () и remove_if () :
- remove () : эта функция удаляет все вхождения значения, переданного в ее аргументах. Он отличается от «erase ()» тем, что «erase ()» удаляет значения по позиции, тогда как «remove ()» удаляет переданное значение. Размер списка уменьшается на количество удаленных вхождений.
Сложность времени: O (n) - remove_if () : эта функция удаляет вхождения значений, которые возвращают «true» функции, переданной в ее аргументе.
Сложность времени: O (n)
// C ++ код для демонстрации работы remove ()
// remove_if ()
#include<iostream>
#include<list> // for list operations
using
namespace
std;
// функция для передачи аргумента "remove_if ()"
bool
is_div_5(
const
int
& num) {
return
num%5==0;}
int
main()
{
// инициализируем список целых чисел
list<
int
> list1={10,14,20,22,30,33,22};
// печать оригинального списка
cout <<
"The original list is : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
// используя remove (), чтобы удалить все вхождения 22
list1.
remove
(22);
// список после удаления всех 22 вхождений
cout <<
"The list after deleting all 22 occurrences : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
// используя remove_if () для удаления кратного 5
list1.remove_if(is_div_5);
// список после удаления всех кратных 5
cout <<
"The list after deleting all multiples of 5 : "
;
for
(list<
int
>::iterator i=list1.begin(); i!=list1.end(); i++)
cout << *i <<
" "
;
cout << endl;
}
Выход:
The original list is : 10 14 20 22 30 33 22 The list after deleting all 22 occurrences : 10 14 20 30 33 The list after deleting all multiples of 5 : 14 33
- remove () : эта функция удаляет все вхождения значения, переданного в ее аргументах. Он отличается от «erase ()» тем, что «erase ()» удаляет значения по позиции, тогда как «remove ()» удаляет переданное значение. Размер списка уменьшается на количество удаленных вхождений.
Эта статья предоставлена Манджитом Сингхом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Как удалить последний элемент из списка в C ++ STL
- Как удалить диапазон значений из списка с помощью итератора
- Различные способы удаления элементов в std :: map (erase () и clear ())
- Минимальные операции удаления, чтобы сделать все элементы массива одинаковыми
- Удалить элементы массива, которые меньше следующего или становятся меньше
- Как вставить элементы в C ++ STL List?
- Упорядочить данный список так, чтобы он состоял из чередующихся элементов минимального максимума
- «удалить это» в C ++
- delete () в C ++
- Как удалить последний элемент из набора в C ++
- удалить и освободить () в C ++
- Как удалить последний элемент с карты в C ++
- Как удалить элемент из набора, передав его значение в C ++
- Перегрузка операторов New и Delete в c ++
- операторы new и delete в C ++ для динамической памяти
0.00 (0%) 0 votes