30просмотров
12 декабря 2023 г.
Score: 33
//List
//Мы уже познакомились с контейнером под названием "map", а сейчас познакомимся с контейнером "list".
//"List" - это двусвязный список, который также является контейнером. В чем его преимущество? Прежде всего, это удобство добавления и вставки элементов. С помощью списка вы легко можете добавить элемент в конец или в начало, а также удалить элемент одной командой.
#include <iostream>
#include <list> //Подключение библиотеки "List".
using namespace std;
void printList(const list<int> &listPrint){ cout<<"Элементы списка: "; for(auto i = listPrint.cbegin();i!=listPrint.cend();++i){ cout<<i<<" ";//Итератор можно представить как частичный аналог указателя, поэтому для работы с ним нужно декларировать символ "". }//Функция для вывода списка. cout<<endl;
} int main(){ list<int>(salaryTop);//Предположим, что этот список будет содержать значения зарплат. salaryTop.push_back(60000); //Чтобы добавить элементы в список, используем команду "push_back". salaryTop.push_back(100000); salaryTop.push_back(100000); salaryTop.push_back(200000); list<int>(salaryMin); //Добавим в этот список значение маленькой зарплаты. salaryMin.push_back(10000); salaryMin.push_back(100000);//Например, если это не минимальная зарплата, и я ошибся, нужно изменить это значение. Я хочу удалить это число. salaryMin.push_back(40000); //Но сначала нужно вывести содержимое списка, чтобы убедиться, что все в порядке. Важно помнить, что это не массив, где индексация начинается с 0. Это список, и для вывода его элементов нам понадобится итератор. Чтобы вывести список с помощью итератора, нам потребуется цикл, и нам нужно будет написать этот цикл дважды. Поэтому давайте создадим функцию для этого. list<int> :: iterator it = find(salaryMin.begin(), salaryMin.end(), 100000);//Мы добавили итератор, но давайте добавим значение минимальной зарплаты после значения 100000. Так как элементы в списке добавляются последовательно, мне нужен итератор. if(it!=salaryMin.end()){ salaryMin.insert(next(it), 30000);//Если it = 100000, то я хочу поставить 30000 после него. } printList(salaryMin);//Вывод:Элементы списка: 10000 100000 40000 printList(salaryTop);//Вывод:Элементы списка: 50000 100000 100000 200000 //Хорошо, я добавил значение 30000, но теперь я хочу удалить число 100000. salaryMin.remove(100000); printList(salaryMin);//Вывод:Элементы списка: 10000 30000 40000 //Теперь я хочу снова добавить число 50000 в конец списка. salaryMin.push_back(50000);//"push_back" - это команда для добавления элемента в конец списка. printList(salaryMin);//Вывод:Элементы списка: 10000 30000 40000 50000 //Теперь давайте создадим еще один список, чтобы проиллюстрировать разницу между значениями хороших и минимальных зарплат. list<int>(averageSalary); auto it1 =salaryTop.begin(); auto it2 =salaryMin.begin(); while (it1 != salaryTop.end() && it2 != salaryMin.end()) { int diff = it1 - it2; averageSalary.push_back(diff); ++it1; ++it2; } printList(averageSalary);//Вывод:50000 70000 60000 150000 //Вывод: Существует множество команд для работы с "list". "List" также может использоваться с классами. "List" очень удобен, и главное, он не является массивом, а представляет собой список. Если говорить простым языком, то список "list" с числами от 1 до 5 выглядит следующим образом: число 1 имеет ссылку на число 2, которое в свою очередь имеет ссылку на число 3, и так далее до числа 5.
}
/Чтение книг и документации рекомендуется для углубленного понимания. Идите и читайте, я не ваш учитель! P.S. Файл: list_1.cpp /
#list #контейнер