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

Освоение std::list в C++: синтаксис, функции и практические примеры

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

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

Контейнер автоматически управляет памятью через аллокатор, поэтому может расширяться или сокращаться с обоих концов во время выполнения.

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

Определение списка

Для использования std::list подключите заголовочный файл <list>:

#include <list> // Определение шаблона
// template<class T, class Alloc = std::allocator<T>> class list;

Параметры:

Пример 1: Базовая итерация

#include <iostream>
#include <list>
int main() {
    std::list<int> my_list{12, 5, 10, 9};
    for (int x : my_list) {
        std::cout << x << '\n';
    }
}

Вывод:

Освоение std::list в C++: синтаксис, функции и практические примеры

Основные операции std::list

ФункцияОписание
insert()Вставляет элемент перед позицией итератора.
push_back()Добавляет элемент в конец.
push_front()Добавляет элемент в начало.
pop_front()Удаляет первый элемент.
size()Возвращает количество элементов.
front()Доступ к первому элементу.
back()Доступ к последнему элементу.
reverse()Разворачивает порядок элементов.
merge()Объединяет два отсортированных списка в один.

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

Пример 2: Варианты конструкторов

#include <iostream>
#include <list>
int main() {
    std::list<int> l; // пустой
    std::list<int> l1{10, 20, 30};
    std::list<int> l2(l1.begin(), l1.end()); // копирование диапазона
    std::list<int> l3(std::move(l1)); // перемещение
    std::cout << "Размер l: " << l.size() << '\n';
    std::cout << "Содержимое l2:\n";
    for (int x : l2) std::cout << x << '\n';
    std::cout << "Содержимое l3:\n";
    for (int x : l3) std::cout << x << '\n';
}

Вывод:

Освоение std::list в C++: синтаксис, функции и практические примеры

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

Вставка элементов

Используйте push_front, push_back или insert для добавления элементов.

Пример 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); // перед 10
    }
    for (int x : my_list) std::cout << x << '\n';
}

Вывод:

Освоение std::list в C++: синтаксис, функции и практические примеры

Удаление элементов

Используйте erase для удаления отдельных элементов или диапазонов.

Пример 4: Демонстрация erase

#include <iostream>
#include <list>
int main() {
    std::list<int> my_list{12, 5, 10, 9};
    std::cout << "До удаления:\n";
    for (int x : my_list) std::cout << x << '\n';
    my_list.erase(my_list.begin()); // удалить первый
    std::cout << "После удаления:\n";
    for (int x : my_list) std::cout << x << '\n';
}

Вывод:

Освоение std::list в C++: синтаксис, функции и практические примеры

Ключевые выводы

Язык C

  1. Операторы в C++: типы, примеры и практические программы
  2. Цикл do-while в C++: синтаксис, примеры и вложенные циклы
  3. Оператор switch-case в C++: синтаксис, применение и практические примеры
  4. Динамическое выделение массивов в C++: практическое руководство с примерами кода
  5. Указатели в C++: концепции, примеры и практические применения
  6. Перегрузка операторов в C++: практическое руководство с примерами кода
  7. Структуры (struct) в C++: объяснение с практическим примером
  8. Функции в C++: подробное объяснение с практическими примерами кода
  9. C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования
  10. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции