7. Удалите два элемента Item из контейнера vi
iid.8. Повторите упражнение с контейнером типа list
vector.Теперь поработайте с контейнером map
1. Определите контейнер map
msi.2. Вставьте в него десять пар (имя, значение), например msi["lecture"]=21
3. Выведите пары (имя, значение) в поток cout
4. Удалите пары (имя, значение) из контейнера msi
5. Напишите функцию, считывающую пары из потока cin
msi.6. Прочитайте десять пар из потока ввода и поместите их в контейнер msi
7. Запишите элементы контейнера msi
cout.8. Выведите сумму (целых) значений из контейнера msi
9. Определите контейнер map
mis.10. Введите значения из контейнера msi
mis; иначе говоря, если в контейнере msi есть элемент ("lecture",21), то контейнер mis также должен содержать элемент (21,"lecture").11. Выведите элементы контейнера mis
cout.Несколько заданий, касающихся контейнера vector
1. Прочитайте несколько чисел с плавающей точкой (не меньше 16 значений) из файла в контейнер vector
vd.2. Выведите элементы контейнера vd
cout.3. Создайте вектор vi
vector с таким же количеством элементов, как в контейнере vd; скопируйте элементы из контейнера vd в контейнер vi.4. Выведите в поток cout
vd[i], vi[i]) по одной в строке.5. Выведите на экран сумму элементов контейнера vd
6. Выведите на экран разность между суммой элементов контейнеров vd
vi.7. Существует стандартный алгоритм reverse, получающий в качестве аргументов последовательность (пару итераторов); поменяйте порядок следования элементов vd
cout.8. Вычислите среднее значение элементов в контейнере vd
9. Создайте новый контейнер vector
vd2 и скопируйте в него элементы контейнера vd, которые меньше среднего значения.10. Отсортируйте контейнер vd
Контрольные вопросы
1. Приведите примеры полезных алгоритмов из библиотеки STL?
2. Что делает алгоритм find()
3. Что делает алгоритм count_if()
4. Что алгоритм sort(b,e)
5. Как алгоритмы из библиотеки STL получают контейнеры в качестве аргумента ввода?
6. Как алгоритмы из библиотеки STL получают контейнеры в качестве аргумента вывода?
7. Как алгоритмы из библиотеки STL обозначают ситуации “не найден” или “сбой”?
8. Что такое функция-объект?
9. Чем функция-объект отличается от функции?
10. Что такое предикат?
11. Что делает алгоритм accumulate()
12. Что делает алгоритм inner_product()
13. Что такое ассоциативный контейнер? Приведите не менее трех примеров.
14. Является ли класс list
15. Сформулируйте принцип организации бинарного дерева.
16. Что такое (примерно) сбалансированное дерево?
17. Сколько места занимает элемент в контейнере map
18. Сколько места занимает элемент в контейнере vector
19. Зачем нужен контейнер unordered_map
map?20. Чем контейнер set
map?21. Чем контейнер multimap
map?22. Зачем нужен алгоритм copy()
23. Что такое бинарный поиск?
Термины
Упражнения
1. Перечитайте главу и выполните все упражнения из врезок ПОПРОБУЙТЕ
, если вы еще не сделали этого.2. Найдите надежный источник документации по библиотеке STL и перечислите все стандартные алгоритмы.
3. Самостоятельно реализуйте алгоритм count()
4. Самостоятельно реализуйте алгоритм count_if()
5. Что нам следовало бы сделать, если бы мы не могли вернуть итератор end()
find() и count(), чтобы они получали итераторы, установленные на первый и последний элементы. Сравните результаты со стандартными версиями.6. В примере класса Fruit
Fruit в контейнер set. Что делать, если мы не хотим копировать эти структуры? Мы могли бы вместо этого использовать контейнер set. Однако в этом случае мы были бы вынуждены определить оператор сравнения для этого контейнера. Выполните это упражнение еще раз, используя контейнер set, Fruit_comparison> . Обсудите разницу между этими реализациями.