Содержание
- 2. Адаптеры контейнеров Рассмотрим специализированные последовательные контейнеры – стек, очередь и очередь с приоритетами. Они не являются
- 3. Стек (stack) – структура данных, которая допускает только две операции, изменяющие ее размер: push (добавление элемента
- 4. Стек (stack) В качестве примера используем стек для чтения последовательности целых чисел и отображения их в
- 5. int main1() { stack > S; int x; cout while (cin >> x) S.push(x); while (!S.empty())
- 6. Стек (stack) Для стеков мы не можем использовать итераторы, а также не можем получить доступ к
- 7. int main2() { stack > S, T, U; S.push(10); S.push(20); S.push(30); cout T = S; cout
- 8. Вывод программы: Pushed onto S: 10 20 30 After T = S; we have S ==
- 9. Очередь (queue) – структура данных, в которую можно добавлять элементы с одного конца, – сзади, и
- 10. Использование очереди. Функции push, pop, back и front #include #include #include int main3() { queue >
- 11. Очередь – продолжение программы Вывод программы: After pushing 10, 20 and 30: Q.front() = 10 Q.back()
- 12. Очередь с приоритетами (priority queue) - структура данных, из которой, если она не пуста, можно удалить
- 13. В этой программе числа следуют в нисходящем порядке: Retrieved element: 1000 Retrieved element: 123 Retrieved element:
- 14. Рассмотрим пример, в котором элементы будут извлекаться по порядку возрастания последних цифр в десятичном представлении целых
- 15. int main5() { priority_queue , CompareLastDigits> P; int x; P.push(123); P.push(51); P.push(1000); P.push(17); while (!P.empty()) {
- 16. Пары и сравнения Чтобы использовать словари и словари с дубликатами более интересным способом, воспользуемся шаблонным классом
- 17. Пары и сравнения Шаблон pair имеет два параметра, представляющих собой типы членов структуры pair: first и
- 18. Пары и сравнения Для пары определены проверка на равенство (==) и операция сравнения ( Например, для
- 19. Сравнения Когда мы пишем операторы сравнения для наших собственных типов, нам необходимо определить только == и
- 20. Сравнения template inline bool operator>=(const T1 &x, const T2 &y) { return !(x Как видно из
- 21. Пример со словарём Словарь содержит пары (k, d), где k – ключ, a d – сопутствующие
- 22. Пример со словарём Заметим, что здесь выводим (*i).second перед (*i)first, так что не нужно планировать, сколько
- 23. Пример интерфейса Пример команды Значение ?Johnson, J. Показать телефонный номер абонента Johnson, J. /Johnson, J. Удалить
- 24. Приложение, использующее класс mар (словарь): Телефонный справочник (для VS 2013, UNICOD) #include #include #include #include #include
- 25. Приложение, использующее класс mар (словарь): Телефонный справочник Определение словаря задаётся таким образом: typedef map directype; class
- 26. Основные функции, используемые в приложении: void ReadInput (directype &D) – чтение данных из файла; void ShowCommands
- 27. Entries read from file phone.txt: 54321 Smith, P. Из файла прочитали 12345 Johnson, J. две записи.
- 28. void ReadInput (directype &D) - 1 { int i,k; long nr; CStdioFile f; if (!f.Open(_T("phone.txt"), CFile::modeRead))
- 29. void ReadInput (directype &D) - 2 while (f.ReadString(s)) { nr = _wtoi(s); k = wcslen(s); if
- 30. void ProcessCommands(directype &D) - 1 { wofstream ofstr; CStdioFile f; long nr; TCHAR ch; wstring buf;
- 31. void ProcessCommands(directype &D) - 2 switch (ch) { case '?': case '/': // найти или удалить:
- 32. void ProcessCommands(directype &D) - 3 case '!': // добавить (или обновить) wcin >> nr; if (wcin.fail())
- 33. void ProcessCommands(directype &D) - 4 if (i == D.end()) { D[s] = nr; } else (*i).second
- 34. void ProcessCommands(directype &D) - 5 for (i = D.begin(); i != D.end(); i++) { s.Format(_T(" %d
- 35. int map2() { directype D; ReadInput(D); ShowCommands(); ProcessCommands(D); return 0; }
- 36. Морской бой (диаграмма классов) Игровое пространство Флот Корабль Клетка
- 38. Скачать презентацию