- •1. Роль вычислительной техники в решении прикладных задач.
- •2. Задачи, особенности и основные инструменты прикладного программирования
- •3.Языки программирования: классификация, особенности, критерии выбора.
- •4. Архитектура прикладных информационных систем.
- •5. Процедурная и объектно-ориентированная декомпозиция.
- •6. Основные принципы объектно-ориентированного программирования: абстрагирование, инкапсуляция, наследование, полиморфизм, модульность, сохраняемость, параллелизм.
- •7. Объекты и типы объектов. Атрибуты объектов и типы атрибутов. Методы объектов.
- •9. Директивы препроцессора: #include, #define, #error, #pragma, операции # и ##
- •11. Компиляция программы и сборка исполняемого модуля.
- •12. Размещение программы и данных в памяти.
- •13. Структура исполняемого модуля.
- •14. Переменные: объявление, определение, инициализация
- •15. Переменные: значение, указатель, ссылка.
- •16.Время жизни и области видимости переменных.
- •19. Составные типы данных.
- •20. Встроенные массивы: размещение в памяти, доступ к элементам. Размещение массива в памяти
- •Элементы массива
- •22. Условные конструкции выбора if/else , select.
- •23. Конструкции циклов for, while, do/ while; операторы break и continue.
- •24. Логические операции.
- •25. Функции: объявление, определение, передача аргументов по ссылке и по значению; входные и выходные параметры, возвращаемое значение, инструкция return.
- •26. Перегрузка функций.
- •27. Библиотека стандартного потокового ввода/вывода. Форматированный ввод/вывод. Файловые потоки, потоки в памяти.
- •28. Обработка строк, класс string.
- •29. Классы. Инкапсуляция. Сокрытие данных и видимость членов класса. Идиома «pimpl».
- •30. Конструктор класса. Конструктор с параметрами и конструктор по умолчанию. Конструкторкопирования.Операторприсваивания.Деструктор.
- •31.Наследование и полиморфизм классов: виртуальные функции.
- •32.Абстрактные базовыеклассы.
- •33.Множественное наследование.
- •34.Перегрузка операторов.
- •35.Объекты-владельцы. «Интеллектуальные» указатели.
- •36. Объекты-владельцы с частной копией ресурса.
- •37. Объекты-владельцы с совместным владением ресурсом.
- •38. Приведениетипов. Операторыstatic_cast, reinterpret_cast, dynamic_cast.
- •39. Константные и не-константные переменные. Оператор const_cast.
- •40. Шаблоны функций и шаблоны классов.
- •41. КонтейнерыстандартнойбиблиотекиStl.
- •42. Итераторы контейнеров.
- •43. Динамический массив на примере контейнера vector.
- •44. Связный список на примере контейнера list.
- •45. Контейнер deque библиотеки stl.
- •46. Ассоциативные контейнеры: map, multimap, set, multiset.
- •47. Стандартные алгоритмы: алгоритм sort; объекты-функции.
- •48. Взаимодействие прикладных программ с базами данных. Протокол odbc.
- •49. Оконный интерфейс. Организация графического оконного интерфейса при помощи оконных сообщений в ос Windows.
- •50. Работа с объектами графического интерфейса gdi.Кисти и перья; контекст устройства вывода («devicecontext»)
42. Итераторы контейнеров.
Итератор похож на указатель своими основными операциями: указание одного отдельного элемента в коллекции объектов (называется доступ к элементу) и изменение себя так, чтобы указывать на следующий элемент (называется перебор элементов). Также должен быть определён способ создания итератора, указывающего на первый элемент контейнера, и способ узнать, перебраны ли все элементы контейнера. В зависимости от используемого языка и цели, итераторы могут поддерживать дополнительные операции или определять различные варианты поведения.
Главное предназначение итераторов заключается в предоставлении возможности пользователю обращаться к любому элементу контейнера при сокрытии внутренней структуры контейнера от пользователя. Это позволяет контейнеру хранить элементы любым способом при допустимости работы пользователя с ним как с простой последовательностью или списком. Проектирование класса итератора обычно тесно связано с соответствующим классом контейнера. Обычно контейнер предоставляет методы создания итераторов.
Необходимо отметить, что счётчик цикла иногда называют итератором цикла. Тем не менее, счётчик цикла обеспечивает только перебор элементов, но не доступ к элементу.
В библиотеке STL для доступа к элементам в качестве посредника используется обобщённая абстракция, именуемая итератором. Каждый контейнер поддерживает «свой» вид итератора, который представляет собой «модернизированный» интеллектуальный указатель, «знающий» как получить доступ к элементам конкретного контейнера. Стандарт C++ определяет пять категорий итераторов, описанных в следующей таблице:
Входные operator++, operator*, operator->, конструкторкопии, operator=, operator==, operator!= Обеспечивают доступ для чтения в одном направлении. Позволяют выполнить присваивание или копирование с помощью оператора присваиваивания и конструктора копии
Выходные operator++, operator*, конструктор копии Обеспечивают доступ для записи в одном направлении. Их нельзя сравнивать на равенство.
Однонаправленные operator++, operator*, operator->, конструктор копии, конструктор по умолчанию, operator=, operator==, operator!= Обеспечивают доступ для чтения и записи в одном направлении. Позволяют выполнить присваивание или копирование с помощью оператора присваиваивания и конструктора копии. Их можно сравнивать на равенство.
Двунаправленные operator++, operator--, operator*, operator->, конструктор копии, конструктор по умолчанию, operator=, operator==, operator!= Поддерживают все функции, описанные для однонаправленных итераторов (см. выше). Кроме того, они позволяют переходить к предыдущему элементу.
Произвольного доступа operator++, operator--, operator*, operator->, конструктор копии, конструктор по умолчанию, operator=, operator==, operator!=, operator+, operator-, operator+=, operator-=, operator<, operator>, operator<=, operator>=, operator[] Эквивалентны обычным указателям: поддерживают арифметику указателей, синтаксис индексации массивов и все формы сравнения.
43. Динамический массив на примере контейнера vector.
C-подобный динамический массив произвольного доступа с автоматическим изменением размера при добавлении/удалении элемента. Доступ по индексу за . Добавление-удаление элемента в конец vector занимает амортизированное время, та же операция в начале или середине vector — . Стандартная быстрая сортировка за . Поиск элемента перебором занимает . Существует специализация шаблона vector для типа bool, которая требует меньше памяти за счёт хранения элементов в виде битов, однако она не поддерживает всех возможностей работы с итераторами. (фото не загрузилось… http://ru.wikipedia.org/wiki/Стандартная_библиотека_шаблонов#.D0.9A.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80.D1.8B)
