Similar presentations:
Контейнеры. Что это и как работает?
1.
КонтейнерыЧТО ЭТО И КАК РАБОТАЕТ
2.
Управление шаблонами (С++20)3.
Типы контейнеров•array: коллекция фиксированного размера.
•vector: коллекция переменного размера.
•deque: двусторонняя очередь.
•list: двухсвязный список
•forward_list: односвязный список.
4.
Array5.
Основные функции array•size(): возвращает размер контейнера
•at(index): возвращает элемент по индексу index
•front(): возвращает первый элемент
•back(): возвращает последний элемент
•fill(n): присваивает всем элементам контейнера
значение n
6.
Vector7.
Основные функции vector•capacity(): длинна выделенного массива
•insert(): вставить элемент
•erase(): удалить элемент
•push_back(): вставить элемент в конец
•pop_back(): получить и удалить последний элемент
8.
Deque9.
Основные функции deque•push_back(val): добавляет значение val в конец
очереди
•push_front(val): добавляет значение val в начало
очереди
•pop_back(): удаляет последний элемент
•pop_front(): удаляет первый элемент
10.
List и ForwardList1
8
3
5
4
1
8
3
5
4
11.
Пример кода12.
Итераторы13.
На примере std::vector<Type>14.
Перебор контейнера15.
Операции над итераторами•*iter: получение элемента, на который указывает итератор
•++iter: перемещение итератора вперед для обращения к следующему элементу
•--iter: перемещение итератора назад для обращения к предыдущему элементу.
Итераторы контейнера forward_list не поддерживают операцию декремента.
•iter1 == iter2: два итератора равны, если они указывают на один и тот же
элемент
•iter1 != iter2: два итератора не равны, если они указывают на разные элементы
•iter + n: возвращает итератор, который смещен от итератора iter на n позиций
вперед
•iter - n: возвращает итератор, который смещен от итератора iter на n позиций
назад
•iter += n: перемещает итератор на n позиций вперед
•iter -= n: перемещает итератор на n позиций назад
16.
Чтение и запись по итератору17.
Реверсивные итераторы18.
Итераторы для массива19.
Пример использования итератора массива20.
Добавление и удаление объектов21.
Вставка элемента22.
std::stack<>• Push
• Pop
• Peek
• Empty
• Size
23.
std::queue<>• Push
• Pop
• Front
• Back
• Empty
• Size
24.
std::priority_queue<>• Push
• Pop
• top
• Empty
• Size
25.
ПрактикаНаписать калькулятор постфиксных математических выражений
поддерживающий сложение, вычитание и умножение
Пример: 8 9 + 1 7 - *
Результат -102
26.
ПрактикаРассмотрим последовательность, состоящую из круглых,
квадратных и фигурных скобок. Программа должна определить,
является ли данная скобочная последовательность правильной.
Пример:
{111}[ff(data)] – правильная
[ааа(] – неправильная
*Добавьте контейнер в котором по окончании работы останутся
все символы кроме скобок
27.
ПрактикаНапишем класс Vector2D, представляющий собой вектор
координаты которой могут быть заданы различными
типами данных.
От Vector2D наследуем классы Vector3D и Point
28.
ПрактикаНапишите класс User, у которого есть поле id, которое
является шаблонным, класс который в качестве id
принимает Int должен автоматически присваивать
неповторяющийся id