Линейные структуры
• Векторы • Стеки • Очереди
Векторы • Вектор – это контейнер для хранения последовательного множества данных. • Для применения вектора нужно подключить библиотеку: #include • Также как и массив может быть использован для различных типов – vector v 1; – vector v 2; – vector v 3; – vector v 4;
Инициализация векторов • Класс вектор содержит различные реализации конструкторов и поэтому пользователь может инициализировать векторы по необходимости. – vector v 1; // изначально пустой – vector v 2(5); // 5 элементов, изначально равные нулю(0) – vector v 3(10, 1); // 10 элементов, изначально равные 1 – vector v 4(v 3); // v 4 это копия v 3
Доступ к элементам вектора vector vec(5); v[1] = 5; v. at(2) = 24; v. front() = v. back();
Пример с другими функциями вектора //изначально пустой вектор vector v; // ввести элементы for (int i = 0; i < 5; i++) { v. push_back(i); cout << "Size: " << v. size() << endl; } // удалить элементы for (int j = 0; j < 5; j++) { v. pop_back(); cout << "Size: " << v. size() << endl; } cout << endl << v. empty() << endl;
Задачи на векторы • Реализовать игру «Русская рулетка» • Дается список мышей с порцией поедания сыра. Нужно накормить как можно больше мышей(подсказка: нужно отсортировать в порядке возрастания порции)
Стеки • Стеки - это множество элементов, сложенных в стопку. В стеках реализуется принцип first in last out (FILO).
• Для создания стека нужно подключить и в коде программы его объявить: • stack name, где type - тип стека, а name - имя стека. • Функции стека – – – push() - добавить элемент pop() - удалить верхний элемент top() - получить верхний элемент size() - размер стека empty() - true, если стек пуст
Пример стека string s; stack st; while (cin>>s){ st. push(s); if(s=="0") break; } while (!(st. empty())) {cout<
Задача на стек • Нужно реализовать случай когда в вагоне только одна дверь, то есть люди могут зайти и выйти оттуда с одной двери • Нужно написать программу на проверку правильных скобок
Очереди • Очереди, как следует из название, используют принцип first in first out (FIFO). То есть, тот, кого мы первым запустили в очередь, первым из нее и выйдет (хотя в реальной жизни не всегда так. . )
Объявление очереди • Подключаем • queue name;
• • • Функции очереди push() - добавить элемент pop() - удалить первый элемент size() - размер очереди empty() - true, если очередь пуста front() - получить первый элемент back() - получить последний элемент
Пример • string s; • queue st; • • • while (cin>>s){ st. push(s); if(s=="0") break; } while (!(st. empty())) • {cout<
Задача на очереди • Люди, прибывшие в магазин, в зависимости от их потребностей становятся в очередь на разные ряды. Так как в магазине только одна касса, их нужно выстроить в очередь в кассу таким образом, чтобы изначальный порядок каждой очереди не нарушился.