1.06M
Category: programmingprogramming

Контейнеры. Что это и как работает?

1.

Контейнеры
ЧТО ЭТО И КАК РАБОТАЕТ

2.

Управление шаблонами (С++20)

3.

Типы контейнеров
•array: коллекция фиксированного размера.
•vector: коллекция переменного размера.
•deque: двусторонняя очередь.
•list: двухсвязный список
•forward_list: односвязный список.

4.

Array

5.

Основные функции array
•size(): возвращает размер контейнера
•at(index): возвращает элемент по индексу index
•front(): возвращает первый элемент
•back(): возвращает последний элемент
•fill(n): присваивает всем элементам контейнера
значение n

6.

Vector

7.

Основные функции vector
•capacity(): длинна выделенного массива
•insert(): вставить элемент
•erase(): удалить элемент
•push_back(): вставить элемент в конец
•pop_back(): получить и удалить последний элемент

8.

Deque

9.

Основные функции deque
•push_back(val): добавляет значение val в конец
очереди
•push_front(val): добавляет значение val в начало
очереди
•pop_back(): удаляет последний элемент
•pop_front(): удаляет первый элемент

10.

List и ForwardList
1
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

29.

Спасибо за внимание
English     Русский Rules