Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

std::list в C++ с примером

Что такое std::list?

В C++ std::list относится к контейнеру хранилища. std:list позволяет вам вставлять и удалять элементы из любого места. std::list реализован как двусвязный список. Это означает, что к данным списка можно обращаться двунаправленно и последовательно.

Список стандартной библиотеки шаблонов не поддерживает быстрый произвольный доступ, но поддерживает последовательный доступ со всех сторон.

Вы можете разбросать элементы списка по разным участкам памяти. Информация, необходимая для последовательного доступа к данным, хранится в контейнере. std::list может расширяться и сжиматься с обоих концов по мере необходимости во время выполнения. Внутренний распределитель автоматически выполняет требования к хранилищу.

Из этого руководства по C++ вы узнаете:

Зачем использовать std::list?

Вот причина использования std::List :

Синтаксис списка

Чтобы определить std::list, мы должны импортировать заголовочный файл . Вот синтаксис определения std::list:

template < class Type, class Alloc =allocator<T> > class list;

Вот описание вышеуказанных параметров:

Примеры 1:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };

	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите заголовочный файл алгоритма, чтобы использовать его функции.
  2. Включите файл заголовка iostream, чтобы использовать его функции.
  3. Включите файл заголовка списка, чтобы использовать его функции.
  4. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело этой функции.
  5. Создайте список с именем my_list с набором из 4 целых чисел.
  6. Используйте цикл for для создания переменной цикла x. Эта переменная будет использоваться для перебора элементов списка.
  7. Распечатайте значения списка на консоли.
  8. Конец тела цикла for.
  9. Конец тела функции main().

Функции списка C++

Вот общие функции std::list:

Функция Описание insert () Эта функция вставляет новый элемент перед позицией, на которую указывает итератор. push_back () Эта функция добавляет новый элемент в конец списка. push_front () Она добавляет новый элемент в начало списка. first item.size()Эта функция определяет количество элементов списка.front()Определяет первые элементы списка.back()Определяет последний элемент списка.reverse()Переворачивает элементы списка.merge()Объединяет два отсортированные списки.

Конструкторы

Вот список функций, предоставляемых заголовочным файлом :

Пример 2:

#include <iostream>
#include <list>
using namespace std;
int main(void) {
	list<int> l;
	list<int> l1 = { 10, 20, 30 };
	list<int> l2(l1.begin(), l1.end());
	list<int> l3(move(l1));  
	cout << "Size of list l: " << l.size() << endl;
	cout << "List l2 contents: " << endl;
	for (auto it = l2.begin(); it != l2.end(); ++it)
	      cout << *it << endl;
	cout << "List l3 contents: " << endl;
	for (auto it = l3.begin(); it != l3.end(); ++it)
		cout << *it << endl;
	return 0;
}

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите файл заголовка iostream, чтобы использовать его функции.
  2. Включите файл заголовка списка, чтобы использовать его функции.
  3. Включите пространство имен std в код, чтобы использовать его классы, не вызывая его.
  4. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело этой функции.
  5. Создайте пустой список с именем l.
  6. Создайте список с именем l1 из набора из 3 целых чисел.
  7. Создайте список с именем l2, содержащий все элементы списка с именем l1, от начала до конца.
  8. Создайте список с именем l3, используя семантику перемещения. Список l3 будет иметь то же содержимое, что и список l2.
  9. Печать размера списка с именем l на консоли вместе с другим текстом.
  10. Выведите текст на консоль.
  11. Создайте итератор с именем it и используйте его для перебора элементов списка с именем l2.
  12. Выведите элементы списка с именем l2 на консоль.
  13. Выведите текст на консоль.
  14. Создайте итератор с именем it и используйте его для перебора элементов списка с именем l3.
  15. Выведите элементы списка с именем l3 на консоль.
  16. Программа должна возвращать значение после успешного завершения.
  17. Конец тела функции main().

Свойства контейнера

Вот список свойств контейнера:

Свойство Описание Контейнеры SequenceSequence упорядочивают свои элементы в строгой линейной последовательности. Доступ к элементам осуществляется по их положению в последовательности. Двунаправленный список Каждый элемент имеет информацию о том, как найти предыдущий и следующий элементы. Это обеспечивает постоянное время для операций вставки и удаления. Распределитель-осведомленный Объект распределителя используется для динамического изменения размера хранилища.

Вставка в список

Существуют различные функции, которые мы можем использовать для вставки значений в список. Давайте продемонстрируем это:

Пример 3:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	my_list.push_front(11);
	my_list.push_back(18);
	auto it = std::find(my_list.begin(), my_list.end(), 10);
	if (it != my_list.end()) {
		my_list.insert(it, 21);
	}
	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите заголовочный файл алгоритма, чтобы использовать его функции.
  2. Включите файл заголовка iostream, чтобы использовать его функции.
  3. Включите файл заголовка списка, чтобы использовать его функции.
  4. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело этой функции.
  5. Создайте список с именем my_list с набором из 4 целых чисел.
  6. Вставьте элемент 11 в начало списка с именем my_list.
  7. Вставьте элемент 18 в конец списка с именем my_list.
  8. Создайте итератор и с его помощью найдите элемент 10 из списка my_list.
  9. Используйте оператор if, чтобы определить, был ли указанный выше элемент найден или нет.
  10. Вставьте элемент 21 перед указанным выше элементом, если он был найден.
  11. Конец тела оператора if.
  12. Используйте цикл for для создания переменной цикла x. Эта переменная будет использоваться для перебора элементов списка.
  13. Распечатайте значения списка на консоли.
  14. Конец тела цикла for.
  15. Конец тела функции main().

Удаление из списка

Элементы из списка можно удалить. Функция Erase() позволяет вам удалить элемент или диапазон элементов из списка.

Пример 4:

#include <algorithm>
#include <iostream>
#include <list>
using namespace std;
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	cout << "List elements before deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	list<int>::iterator i = my_list.begin();
	my_list.erase(i);
	cout << "\nList elements after deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	return 0;
}

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите заголовочный файл алгоритма, чтобы использовать его функции.
  2. Включите файл заголовка iostream, чтобы использовать его функции.
  3. Включите файл заголовка списка, чтобы использовать его функции.
  4. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  5. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело этой функции.
  6. Создайте список с именем my_list с набором из 4 целых чисел.
  7. Выведите текст на консоль.
  8. Используйте цикл for для создания переменной цикла x. Эта переменная будет использоваться для перебора элементов списка.
  9. Распечатайте значения списка на консоли.
  10. Конец тела цикла for.
  11. Создайте итератор i, указывающий на первый элемент списка.
  12. Используйте функцию erase(), на которую указывает итератор i.
  13. Выведите текст на консоль.
  14. Используйте цикл for для создания переменной цикла x. Эта переменная будет использоваться для перебора элементов списка.
  15. Распечатайте значения списка на консоли. Это происходит после удаления.
  16. Конец тела цикла for.
  17. При успешном завершении программа должна вернуть значение.
  18. Конец тела функции main().

Обзор:


Язык C

  1. Операторы в C++ с примером:что такое, типы и программы
  2. Цикл C++ do…while с примерами
  3. Оператор C++ Switch Case с ПРИМЕРОМ
  4. C++ динамическое выделение массивов с примером
  5. Указатели C++ с примерами
  6. Перегрузка оператора C++ с примерами
  7. Структура С++ с примером
  8. Функции C++ с примерами программ
  9. Разница между структурой и классом:объяснение на примере C++
  10. Счетчик Python в коллекциях с примером