C++ <list> push_back функция
Среди множества контейнеров,list(Двусвязный список) — это структура данных с эффективной вставкой и удалением, иpush_backявляется ключевой функцией для добавления элементов в конец связного списка.
push_backявляется функцией-членом, используемой длясвязного списка (list)изконцаДобавить новый элемент.
push_backреализует связный списокдинамический рост, вам не нужно заранее указывать окончательный размер контейнера, и можно добавлять элементы в любое время и в любом месте по мере необходимости во время выполнения программы.
Определения слов: push— это проталкивание,backозначает «конец», поэтому вместе это означает «протолкнуть в конец», что очень наглядно.
Базовый синтаксис и параметры
push_backявляется функцией-членом классов контейнеров, поэтому сначала нужно иметь объект контейнера, а затем использовать оператор точки.чтобы вызвать её.
Формат синтаксиса
void push_back(const T& value); void push_back(T&& value); // C++11 之后(支持右值)
Описание параметра
- Параметр:
value- Тип: соответствует типу элемента, указанному при определении контейнера, или значению, которое может быть преобразовано в этот тип.
- Описание: значение, которое вы хотите добавить в конец контейнера. Это может быть переменная, литерал (например,
10,"hello") или результат выражения.
Описание функции
- Возвращаемое значение:
void(не возвращает значение). Его назначение — исключительно "добавление элемента"; после завершения добавления функция завершается. - Влияниена контейнер
size()(текущее количество элементов) увеличится на 1. Новый элемент становится последним элементом связного списка.
Пример
Давайте досконально освоим это на ряде примеров, от простого к сложному:push_backИспользование.
Пример 1: Базовое использование - управление целыми числами
Пример
#include <list> // 1. Необходимо подключить заголовочный файл list
int main() {
// 2. Создайте пустой список для хранения целых чисел
std::list<int> numbers;
std::cout << "Изначально размер списка: " << numbers.size() << std::endl;
// 3. Используйте push_back для добавления элементов
numbers.push_back(10); // Добавить целое число 10 в конец
numbers.push_back(20); // Добавить 20 после 10
numbers.push_back(30); // Добавить 30 после 20
std::cout << "После добавления размер списка равен: " << numbers.size() << std::endl;
// 4. Пройти и вывести все элементы
std::cout << "Элементы списка: ";
for(int n : numbers) {
std::cout << n << " ";
}
std::cout << std::endl;
return 0;
}
Ожидаемый вывод:
初始时,list的大小是: 0 添加后,list的大小是: 3 list中的元素是: 10 20 30
Анализ кода:
#include <list>заключается в использованииlistИдея контейнера.std::list<int> numbers;Создан один с именемnumbersпустогоlist, который позже будет хранитьintцелые числа типа.- три раза
push_backвызов, последовательно10,20,30добавить вnumbersконец. Порядок добавления — это элементы вlistитоговом порядке в numbers.size()Возвращает текущее количество элементов.
Пример 2: Управление строками
listОн может хранить не только числа, но и строки, пользовательские типы и любые другие типы данных.
Пример
#include <list>
#include <string>
int main() {
// Создать список, который хранит std::string
std::list<std::string> tasks;
// Используйте push_back для добавления задач
tasks.push_back("Изучить список C++");
tasks.push_back("Сделать домашнее задание");
tasks.push_back("Читать техническую документацию");
std::cout << "Задачи на сегодня (" << tasks.size() << " задач):" << std::endl;
for(const auto& task : tasks) {
std::cout << "- " << task << std::endl;
}
return 0;
}
Ожидаемый вывод:
今日待办事项 (3 项): - 学习 C++ list - 写作业 - 阅读技术文档
Анализ кода:
std::list<std::string>объявляет тип элемента какstd::stringcontainer.push_backПараметр является строковым литералом.
Пример 3: Использование с push_front
push_backиpush_frontможно использовать вместе для построения связного списка.
Пример
#include <list>
int main() {
std::list<int> data;
// Сначала добавляем в начало
data.push_front(30);
data.push_front(20);
data.push_front(10);
// Затем добавляем в конец
data.push_back(40);
data.push_back(50);
std::cout << "Элементы: ";
for(int n : data) {
std::cout << n << " ";
}
std::cout << std::endl;
return 0;
}
Ожидаемый вывод:
元素: 10 20 30 40 50
Анализ кода:
- Сначала используйте
push_frontДобавьте 10, 20, 30 в начало - Затем используйте
push_backДобавьте 40, 50 в конец - Итоговый порядок: 10 -> 20 -> 30 -> 40 -> 50
Другие расширения