- •Глава 2. Модульное программирование 72
 - •Глава 3. Технология создания программ 102
 - •Часть II. Объектно-ориентированное программирование 173
 - •Глава 4. Классы 178
 - •Глава 13. Итераторы и функциональные объекты 328
 - •Глава 14. Алгоритмы 343
 - •Глава 15. Средства для численных расчетов 369
 - •Глава 16. Другие средства стандартной библиотеки 378
 - •Часть 1
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •If ( выражение ) оператор_1; [else оператор_2;]
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •If (f) cout « "ХпРезультат return 0;
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Int* p (&а); // то же самое другим способом
 - •Часть I. Структурное программирование
 - •5 4 2 1 3 // Порядок интерпретации описания
 - •56 Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Int b[nstr][nstb]; // описание массива
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Глава 2
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Int sum(int a. Int b); // объявление функции
 - •Глава 2. Модульное программирование
 - •Void print_worker(Worker); //объявление функции
 - •Часть I. Структурное программирование
 - •Int fl(){return 1;} //правильно
 - •Void f2(){return 1;} // неправильно. F2 не должна возвращать значение
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •92 Часть I. Структурное программирование
 - •Глава 2. Модульное программирование 93
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Void fund (double); // Перегрузка
 - •Void func2(int); // Верно (повторное объявление)
 - •Часть I. Структурное программирование
 - •Глава 2. Модульное программирование
 - •Глава 3
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ 107
 - •II Комментарий, описывающий,
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •If(!remove (&pbeg. &pend. 5))cout « "не найден";
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Глава 3. Технология создания программ
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Int f; //.Частота регенерации
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •168 Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть I. Структурное программирование
 - •Часть II
 - •Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4
 - •Глава 4. Классы
 - •180 Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Int a::count: // Определение в глобальной области
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 4. Классы
 - •Глава 5
 - •Глава 5. Наследование
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 5. Наследование
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 5. Наследование
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 5. Наследование
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 5. Наследование
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 6
 - •Часть II. Объектно-ориентированное программирование
 - •Void add(int d): // Добавление узла в конец списка
 - •Глава 6. Шаблоны классов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 6. Шаблоны классов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 6. Шаблоны классов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 6. Шаблоны классов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 6. Шаблоны классов
 - •Глава 7
 - •Глава 7. Обработка исключительных ситуаций
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 7. Обработка исключительных ситуаций
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 7. Обработка исключительных ситуаций
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 7. Обработка исключительных ситуаций
 - •230 Часть II. Объектно-ориентированное программирование
 - •Глава 8
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 8. Преобразования типов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 8. Преобразование типов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 8. Преобразования типов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 8. Преобразования типов
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 9
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 9. Рекомендации по программированию
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 9. Рекомендации по программированию
 - •Часть II. Объектно-ориентированное программирование
 - •Глава 9. Рекомендации по программированию
 - •250 Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •254 Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Часть II. Объектно-ориентированное программирование
 - •Часть III
 - •Часть III. Стандартная библиотека
 - •Глава 10 Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Часть III. Стандартная библиотека
 - •Глава 10. Потоковые классы
 - •Глава 11
 - •Глава 11. Строки
 - •Часть III. Стандартная библиотека
 - •Глава 11. Строки
 - •Часть III. Стандартная библиотека
 - •Глава 11. Строки
 - •Часть III. Стандартная библиотека
 - •Глава 11. Строки
 - •Часть III. Стандартная библиотека
 - •Глава 12
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы 317
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Часть III. Стандартная библиотека
 - •Глава 12. Контейнерные классы
 - •Глава 13
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 13. Итераторы и функциональные объекты
 - •Часть III. Стандартная библиотека
 - •Глава 14
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы 361
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 14. Алгоритмы
 - •Часть III. Стандартная библиотека
 - •Глава 15
 - •Часть III. Стандартная библиотека
 - •Глава 15. Средства для численных расчетов
 - •Часть III. Стандартная библиотека
 - •Глава 15. Средства для численных расчетов
 - •Часть III. Стандартная библиотека
 - •Глава 15. Средства для численных расчетов
 - •Часть III. Стандартная библиотека
 - •Глава 15. Средства для численных расчетов
 - •Глава 16
 - •Глава 16. Другие средства стандартной библиотеки
 - •Часть III. Стандартная библиотека
 - •396 Приложение 5. Константы, макросы и типы данных стандартной библиотеки
 - •Int level; // флаг состояния буфера
 - •Int bsize; // размер внутреннего буфера
 - •I0lbf 1 построчная буферизация текстового файла;
 - •400 Приложение 5. Константы, макросы и типы данных стандартной библиотеки
 - •402 Приложение 5. Константы, макросы и типы данных стандартной библиотеки
 - •404 Приложение 5. Константы, макросы и типы данных стандартной библиотеки
 - •406 Приложение 5. Константы, макросы и типы данных стандартной библиотеки
 - •446 Приложение 6. Функции стандартной библиотеки
 
Глава 12. Контейнерные классы
309
Вторая форма метода unique использует в качестве параметра бинарный предикат (см. с. 336), что позволяет задать собственный критерий удаления элементов списка. Предикат имеет значение true, если критерий соблюден, и false — в противном случае. Аргументы предиката имеют тип элементов списка:
template <class BinaryPredicate>
void unique(BinaryPredicate binary_pred);
Для слияния списков служит метод merge:
void mergedist<T>& x);
template <class Compare> void merge(list<T>& x, Compare comp);
Оба списка должны быть упорядочены (в первом случае в соответствии с определением операции < для элементов, во втором — в соответствии с функциональным объектом Compare). Результат — упорядоченный список. Если элементы в вызывающем списке и в списке-параметре совпадают, первыми будут располагаться элементы из вызывающего списка.
Метод reverse служит для изменения порядка следования элементов списка на обратный (время работы пропорционально количеству элементов):
void reversed;
Пример работы со списком:
#include <fstream>
#include <list>
using namespace std;
void show (const char *str, const list<int> &L){
cout « str « ":" « endl;
for dist<int>: :const_iterator i = L.beginO; i != L.endd: ++i) cout « *i « " ";
cout « endl;
}
int maind{ list<int> L: list<int>: iterator i; int x;
ifstream indinpnum"); while ( in » x, lin.eofO) L.push_back(x); show("Исходный список", L); L.pushJrontQ);
i = L.beginO: L.insert(++i. 2); show("После вставки 1 и 2 в начало", L); i = L.endd: L.insert(--i, 100): show("После вставки 100 перед последним", L): i = L.beginO: x = *i: L.pop_frontd: cout « "Удалили из начала" « х « endl: i = L.endd: x = *--i; L.pop_backd: cout « "Удалили с конца" « x « endl: showd'CnncoK после удаления". L); L.remove(76):
310
Часть III. Стандартная библиотека
show("После удаления элементов со значением 76". L);-
L.sortO:
show("После сортировки", L);
L.uniqueO;
show("После unique", L);
list<int> LI (L);
L.reverseO;
show("После reverse", L);
}
Результат работы программы:
Исходный список:
56 34 54 0 76 23 51 11 51 11 76 88
После вставки 1 и 2 в начало:
1 2 56 34 54 0 76 23 51 11 51 11 76 88
После вставки 100 перед последним:
1 2 56 34 54 0 76 23 51 11 51 11 76 100 88 Удалили из начала 1
Удалили с конца 88 Список после удаления:
2 56 34 54 0 76 23 51 11 51 11 76 100 После удаления элементов со значением 76: 2 56 34 54 0 23 51 11 51 11 100
После сортировки:
0 2 11 11 23 34 51 51 54 56 100
После unique:
0 2 11 23 34 51 54 56 100
После reverse:
100 56 54 51 34 23 11 2 0
К спискам можно применять алгоритмы стандартной библиотеки, описанные в разделе «Алгоритмы» (с. 343).
Стеки (stack)
Как известно, в стеке (определение см. раздел «Стеки», с. 119) допускаются только две операции, изменяющие его размер — добавление элемента в вершину стека и выборка из вершины. Стек можно реализовать на основе любого из рассмотренных контейнеров: вектора, двусторонней очереди или списка. Таким образом, стек является не новым типом контейнера, а вариантом имеющихся, поэтому он называется адаптером контейнера. Другие адаптеры (очереди и очереди с приоритетами) будут рассмотрены в следующих разделах.
В STL стек определен по умолчанию на базе двусторонней очереди:
template <class T, class Container = deque<T> > class stack { protected: Container c:
