# Ответы на вопросы

## Стандартная библиотека С++

1. Специальный объект, позволяющий перебирать элементы коллекции -- **итератор**
2. Объект класса, в котором определен оператор «круглые скобки», называется -- **функтор**
3. Функция, возвращающая только значения true или false, называется -- **предикат**
4. Контейнер это -- **объект, содержащий в себе другие (обычно однотипные) объекты**
5. Укажите стандартные последовательные контейнеры -- **vector, list, deque, array**
6. Укажите стандартные ассоциативные контейнеры -- **set, multiset, map, multimap**
7. Алгоритмы стандартной библиотеки оперируют -- **полуинтевалами \[i, j) итераторов**
8. В копирующих формах алгоритмов -- **указывается только начальный итератор второго полуинтервала**
9. Для чтения данных из стандартного потока ввода обычно используется -- **объект cin**
10. Для внесения данных в стандартный поток вывода обычно используется -- **объект cout**
11. Для того, чтобы для объектов класса был определен оператор упорядочивания, достаточно определить -- **оператор <**
12. Алгоритм использует унарный функтор. В программе определен бинарный функтор. Каким адаптером можно преобразовать его в унарный (связав один из параметров значением)? -- **bind1st**
13. Размер контейнера можно узнать, вызвав метод контейнера -- **size()**
14. Чтобы удалить из последовательного контейнера а элемент, на который указывает итератор q, нужно использовать метод -- **а.erase(q);**
15. В последовательных контейнерах выражение a.push\_back(t); эквивалентно записи -- **a.insert(a.end(), t);**
16. Предикативная форма алгоритма algorithm будет называться -- **algorithm\_if**
17. Сравнить два полуинтервала итераторов можно при помощи -- **алгоритма equal**
18. Скопировать один полуинтервал в другой можно при помощи -- **алгоритма copy**
19. Из полуинтервала итераторов убирает повторы алгоритм -- **unique**
20. Из полуинтервала итераторов можно удалить элементы, равные некоторому объекту, при помощи алгоритма -- **remove**

## Разработка и использование библиотек программирования

1. Библиотеки программирования это -- **Архивы ресурсов программирования**
2. Библиотеки программирования бывают
   1. Статические
   2. Динамические
3. Заголовочные файлы библиотек программирования компилятора хранятся в папке
   1. include
4. Статические библиотеки программирования компилятора хранятся в папке **lib**
5. Динамические библиотеки программирования компилятора хранятся в папке **bin**
6. Преимущества использования динамических библиотек
   1. маленький объем программ
   2. возможность обновления библиотек без перекомпиляции программы
   3. одновременное использование библиотеки несколькими программами
   4. занимает малый объем в оперативной памяти
7. Аббревиатура API расшифровывается как **Application Programming Interface**
8. Для исключения ошибок повторного определения ресурсов при многократном включении заголовочных файлов
   1. заголовочные файлы содержат объявления, заключенные в директивах

      ```cpp
      #ifndef CONSTANT_NAME
      #define CONSTANT_NAME
      //…
      #endif
      ```
9. Какая директива используется для экспорта функции из библиотеки? **\_\_declspec(dllexport)**
10. Какой модификатор применяется для чтения параметров функций справа налево? **\_\_stdcall**
11. Какая функция загружает нужную библиотеку в оперативную память для использования? -- **LoadLibrary**
12. Какая функция позволяет получить указатель на функцию из загруженной в оперативную память библиотеки? **GetProcAddress**
13. Как называется функция, позволяющая получить необходимый ресурс из загруженной в оперативную память библиотеки? **GetResource**
14. Как называется точка входа динамических библиотек? -- **DllMain**
