Изменения

Перейти к: навигация, поиск

Старые вопросы на экзамен по C++

52 053 байта добавлено, 04:05, 25 апреля 2011
Новая страница: «# Что определяет класс? Чем обличается класс от объекта? # Можно ли объявлять массив объект…»
# Что определяет класс? Чем обличается класс от объекта?
# Можно ли объявлять массив объектов? А массив классов?
# Разрешается ли объявлять указатель на объект? А указатель на класс?
# Допускается ли передавать объекты в качестве параметров, и какими способами? А возвращать как результат?
# Как называется использование объекта одного класса в качестве поля другого класса?
# Является ли структура классом? Чем класс отличается от структуры?
# Объясните принцип инкапсуляции.
# Что такое композиция?
# Для чего используются ключевые слова public и private?
# Можно ли использовать ключевые слова public и private в структуре?
# Существуют ли ограничения на использование public и private в классе? А в структуре?
# Обязательно ли делать поля класса приватными?
# Что такое метод? Как вызывается метод?
# Может ли метод быть приватный?
# Как определить метод непосредственно внутри класса? А вне класса? Чем эти определения отличаются?
# Можно в методах присваивать параметрам значения по умолчанию?
# Что обозначается ключевым словом this?
# Зачем нужны константные методы? Чем отличается определение константного метода от обычного?
# Может ли константный метод вызываться для объектов-переменных? А обычный метод — для объектов-констант?
# Объясните принцип полиморфизма.
# Сколько места в памяти занимает объект класса? Как это узнать?
# Каков размер «пустого» объекта?
# Влияют ли методы на размер объекта?
# Одинаков ли размер класса и аналогичной структуры?
# Какие операции нельзя перегружать? Как вы думаете, почему?
# Можно ли перегружать операции для встроенных типов данных?
# Можно ли при перегрузке изменить приоритет операции?
# Можно ли определить новую операцию?
# Перечислите особенности перегрузки операций как методов класса. Чем отличается перегрузка внешним образом от перегрузки как метода класса?
# Какой результат должны возвращать операции с присваиванием?
# Как различаются перегруженная префиксная и постфиксная операции инкремента и декремента?
# Что означает выражение *this? В каких случаях оно используется?
# Какие операции не рекомендуется перегружать как методы класса? Почему?
# Какие операции разрешается перегружать только как методы класса?
# Дайте определение дружественной функции. Как объявляется дружественная функция? А как определяется?
# Дайте определение конструктора. Каково назначение конструктора? Перечислите отличия конструктора от метода.
# Сколько конструкторов может быть в классе? Допускается ли перегрузка конструкторов? Какие виды конструкторов создаются по умолчанию?
# Может ли конструктор быть приватным? Какие последствия влечет за собой объявление конструктора приватным?
# Приведите несколько случаев, когда конструктор вызывается неявно.
# Как проинициализировать динамическую переменную?
# Как объявить константу в классе? Можно ли объявить дробную константу?
# Каким образом разрешается инициализировать константные поля в классе?
# В каком порядке инициализируются поля в классе? Совпадает ли этот порядок с порядком перечисления инициализаторов в списке инициализации конструктора?
# Какие конструкции С++ разрешается использовать в списке инициализации качестве инициализирующих выражений?
# Какой вид конструктора фактически является конструктором преобразования типов?
# Для чего нужны функции преобразования? Как объявить такую функцию в классе?
# Как запретить неявное преобразование типа, выполняемое конструктором инициализации?
# Какие проблемы могут возникнуть при определении функций преобразования?
# Для чего служит ключевое слово explicit?
# Влияет ли наличие целочисленных констант-полей на размер класса?
# Разрешается ли объявлять массив в качестве поля класса. Как присвоить элементам массива начальные значения?
# Сколько операндов имеет операция индексирования []? Какой вид результата должна возвращать эта операция?
# Для чего нужны статические поля в классе? Как они определяются?
# Как объявить в классе и проинициализировать статический константный массив?
# Что такое выравнивание и от чего оно зависит? Влияет ли выравнивание на размер класса?
# Дайте определение контейнера.
# Какие виды встроенных контейнеров в С++ вы знаете?
# Какие виды доступа к элементам контейнера вам известны?
# Чем отличается прямой доступ от ассоциативного?
# Перечислите операции, которые обычно реализуются для последовательного доступа к элементам контейнера.
# Дайте определение итератора.
# Можно ли реализовать последовательный доступ без итератора? В чем преимущества реализации последовательного доступа с помощью итератора?
# Что играет роль итератора для массивов С++?
# Что такое деструктор? Может ли деструктор иметь параметры?
# Почему для классов-контейнеров деструктор надо писать явным образом?
# Допускается ли перегрузка деструкторов?
# Что такое «глубокое копирование» и когда в нем возникает необходимость?
# Какое копирование осуществляет стандартный конструктор копирования?
# Чем отличается копирование от присваивания?
# Объясните, почему в операции присваивания требуется проверка присваивания самому себе?
# Можно ли в качестве операции индексирования использовать операцию вызова функции ()? В чем ее преимущества перед операцией []?
# Почему необходимо писать два определения операции индексирования? Чем они отличаются?
# Дайте определение вложенного класса.
# Можно ли класс-итератор реализовать как внешний класс? А как вложенный? В чем отличия этих методов реализации?
# Может ли объемлющий класс иметь неограниченный доступ к элементам вложенного класса? А вложенный класс — к элементам объемлющего?
# Ограничена ли глубина вложенности классов?
# Можно ли определить вложенный класс внешним образом? Зачем это может понадобиться?
# Каким образом вложенный класс может использовать методы объемлющего класса? А объемлющий — методы вложенного?
# Что такое «запредельный» элемент, какую роль он играет в контейнерах?
# Объясните, по каким причинам трудно написать универсальный контейнер, элементы которого могут иметь произвольный тип.
# Назовите ключевые слова С++, которые используются для обработки исключений.
# Исключение — это:
## событие;
## ситуация;
## объект;
## ошибка в программе;
## прерывание;
# Каким образом исключение генерируется?
# Каковы функции контролируемого блока?
# Что обозначается ключевым словом catch?
## контролируемый блок;
## блок обработки исключения;
## секция-ловушка;
## генератор исключения;
## обработчик прерывания;
# Какого типа может быть исключение?
# Сколько параметров разрешается писать в заголовке секции-ловушки?
# Какими способами разрешается передавать исключение в блок обработки?
# Объясните, каким образом преодолеть ограничение на передачу единственного параметра в блок обработки.
# Почему нельзя выполнять преобразования типов исключений при передаче в секцию-ловушку?
# Напишите конструкцию, которая позволяет перехватить любое исключение.
# Могут ли контролируемые блоки быть вложенными?
# Зачем нужен «контролируемый блок-функция» и чем он отличается от обычного контролируемого блока?
# Перечислите возможные способы выхода из блока обработки.
# Каким образом исключение «передать дальше»?
# Сколько секций-ловушек должно быть задано в контролируемом блоке?
# Что такое «спецификация исключений»?
# Что происходит, если функция нарушает спецификацию исключений?
# Учитывается ли спецификация исключений при перегрузке функций?
# Что такое «иерархия исключений»?
# Существуют ли стандартные исключения? Назовите два-три типа стандартных исключений.
# Поясните «взаимоотношение» исключений и деструкторов.
# Объясните, зачем может понадобиться подмена стандартных функций завершения.
# Какие виды нестандартных исключений вы знаете?
# В чем отличие механизма структурной обработки исключений Windows от стандартного механизма?
# Какие две роли выполняет наследование?
# Какие виды наследования возможны в С++?
# Чем отличается модификатор доступа protected от модификаторов private и public?
# Чем открытое наследование отличается от закрытого и защищенного?
# Какие функции не наследуются?
# Сформулируйте правила написания конструкторов в производном классе.
# Каков порядок вызова конструкторов? А деструкторов?
# Можно ли в производном классе объявлять новые поля? А методы?
# Если имя нового поля совпадает с именем унаследованного, то каким образом разрешить конфликт имен?
# Что происходит, если имя метода-наследника совпадает с именем базового метода?
# Сформулируйте принцип подстановки.
# Когда выполняется понижающее приведение типов?
# Объясните, что такое «срезка» или «расщепление».
# Объясните, зачем нужны виртуальные функции.
# Что такое связывание?
# Чем «раннее» связывание отличается от «позднего»?
# Какие два вида полиморфизма реализованы в С++?
# Дайте определение полиморфного класса.
# Может ли виртуальная функция быть дружественной функцией класса?
# Наследуются ли виртуальные функции?
# Каковы особенности вызова виртуальных функций в конструкторах и деструкторах?
# Можно ли сделать виртуальной перегруженную операцию, например, сложение?
# Может ли конструктор быть виртуальным? А деструктор?
# Как виртуальные функции влияют на размер класса?
# Как объявляется «чистая» виртуальная функция?
# Дайте определение абстрактного класса.
# Наследуются ли чистые виртуальные функции?
# Можно ли объявить деструктор чисто виртуальным?
# Чем отличается чистый виртуальный деструктор от чистой виртуальной функции?
# Зачем требуется определение чистого виртуального деструктора?
# Наследуется ли определение чистой виртуальной функции?
# Приведите классификацию целей наследования.
# Объясните разницу наследования интерфейса от наследования реализации.
# Назовите причины, требующие разделения программ на части.
# Дайте определение термина «единица трансляции»?
# Чем отличается файл с исходным текстом от единицы трансляции?
# Существуют ли в С++ конструкции, позволяющие идентифицировать отдельный модуль?
# Какие способы сборки программы вы можете назвать?
# Что такое «объектный модуль»? Программа, которая «собирает» объектные модули в программу, называется _____________ ?
# В чем заключается отличие аргумента «файл» от <файл> в директиве #include?
# Что такое ODR?
# Объясните, что такое «страж» включения и зачем он нужен.
# Является ли интерфейс класса его определением?
# Сколько определений класса может быть в единице трансляции?
# Сколько определений класса может быть в многофайловой программе?
# Чем отличаются стандартные заголовки <string>, <string.h> и <cstring>?
# Объясните суть идиомы Pimpl.
# Что такое делегирование и как его можно использовать для повышения степени инкапсуляции?
# Каким образом глобальную переменную, определенную в одной единице трансляции, сделать доступной в другой единице трансляции? А константу?
# Можно ли использовать слово extern при объявлении функций?
# Как локализовать объявление функции в файле?
# Чем отличается «внешнее» связывание от «внутреннего» связывания?
# Что такое «спецификации компоновки»?
# Какие объекты обладают внутренним связыванием по умолчанию?
# Какие области видимости имен вы знаете?
# Для чего используются пространства имен?
# Чем отличаются именованные и неименованные пространства имен?
# Могут ли пространства имен быть вложенными?
# Для чего применяются алиасы пространства имен?
# Как сделать члены пространства имен доступными в нескольких (в пределе — во всех) файлах программного проекта?
# Объясните разницу между статической и динамической инициализацией.
# В чем состоит проблема инициализации глобальных статических переменных?
# Какие элементы класса можно объявлять статическими?
# Можно ли объявить в классе статическую константу? А константный статический массив?
# А какие статические поля можно инициализировать непосредственно в классе?
# Как определяются статические поля? В какой момент работы программы выполняется инициализация статических полей?
# Сколько места в классе занимают статические поля ?
# Чем отличается статический метод от обычного?
# Какие методы класса не могут быть статическими?
# Какие применения статических полей вы можете привести? А каким образом применяются статические методы?
# Приведите структуру и принцип действия паттерна Singleton.
# Для чего предназначены шаблоны?
# Какие виды шаблонов в С++ вы знаете?
# Объясните термин «инстанцирование шаблона».
# В чем разница между определением и объявлением шаблона?
# Объясните назначение ключевого слова typename.
# Какие виды параметров разрешается задавать в шаблоне класса? А в шаблоне функции?
# Можно ли параметрам шаблона присваивать значения по умолчанию?
# Может ли параметром шаблона быть другой шаблон? Каковы особенности объявления параметра-шаблона?
# Что такое специализация шаблона? Объясните разницу между полной и частичной специализацией.
# Разрешается ли специализировать шаблон функции?
# Может ли класс-шаблон быть вложенным в другой класс-шаблон? А в обычный класс?
# Можно ли объявить в классе шаблонный метод? А шаблонный конструктор?
# Можно ли перегружать функцию-шаблон?
# Какие параметры функции-шаблона выводятся автоматически?
# Может ли шаблон класса быть наследником обычного класса? А обычный класс от шаблона?
# Объясните, что такое класс свойств (класс трактовок).
# Каким образом можно использовать возможность наследования обычного класса от шаблона?
# Может ли шаблонный конструктор быть конструктором по умолчанию?
# Для чего применяются директивы явного инстанцирования?
# Объясните, в чем состоят проблемы, возникающие при разделении шаблонного класса на интерфейс и реализацию?
# Что такое «модель явного инстанцирования» и как она работает?
# Может ли шаблонный класс иметь «друзей»?
# Какие проблемы возникают при объявлении дружественной функции для класса-шаблона?
# Разрешается ли определять в классе-шаблоне статические поля? А статические методы?
# Что такое «инициализация нулем»?
# Что является единицей памяти в С++? Какие требования к размеру единицы памяти прописаны в стандарте С++?
# В каких единицах выдает результат операция sizeof? Какие типы данных имеют размер 1?
# Какие три вида памяти входят в модель памяти С++?
# Сколько видов динамической памяти обеспечивает С++?
# Какие функции для работы с динамической памятью достались С++ по наследству от С? В какую библиотеку они включены?
# Какие функции выделяют память, и с помощью каких функций память освобождается?
# Какое важное отличие имеет функция calloc() от функции malloc()?
# Какие действия выполняют функции выделения памяти, если память не может быть выделена?
# Зависит ли объем выделенной памяти от типа указателя? Влияет ли выравнивание на объем выделяемой динамической памяти?
# Можно ли с помощью функции realloc() уменьшить объем выделенной памяти?
# Что произойдет, если функции free() передать в качестве аргумента нулевой указатель?
# В чем главное отличие объектно-ориентированного механизма new/delete от механизма malloc()/free()?
# Сколько существует форм new/delete? В чем их отличие?
# Какие типы являются POD-типами? Чем отличается работа механизма new/delete с POD-объектами и nonPOD-объектами?
# Какие функции выполняет обработчик new?
# Можно ли реализовать собственный обработчик new и «прицепить» его к механизму new/delete?
# В чем главное отличие объединения от других видов классов С++?
# Может ли объединение участвовать в иерархии наследования?
# Разрешается ли определять для объединения конструкторы и деструктор? А виртуальные функции?
# В чем похожи и чем отличаются объединение и размещающий new?
# Объясните, почему при использовании размещающего new нужно явным образом вызывать деструктор?
# Зачем нужны интеллектуальные указатели?
# Что такое «стратегия владения»? Сколько стратегий владения вы знаете?
# Какой интеллектуальный указатель реализован в стандартной библиотеке STL, и какую стратегию владения он реализует?
# Объясните, в чем преимущества и недостатки интеллектуальных указателей со счетчиком ссылок.
# Разрешается ли перегружать new и delete и какими способами?
# Опишите схему функции, перегружающей глобальную функцию new.
# Отличается ли реализация перегруженной функции new[]() для массивов от реализации «обычной» функции new()?
# Как вы думаете, почему функции new/delete, перегружаемые для класса, являются статическими?
# Зачем при перегрузке new/delete для класса нужно проверять размер запрашиваемой памяти?
# Объясните, чем определяется «динамичность» контейнеров?
# Что такое «стратегия распределения памяти», и какие стратегии выделения памяти вы знаете?
# Рассмотрите следующую стратегию распределения памяти: память выделяется для нескольких элементов блоками фиксированной длины, но блоки связываются в список. Для какого вида контейнера можно использовать такую стратегию?
# Какие операции можно перегрузить для доступа к элементам двумерного массива?
# В чем заключаются сложности использования операции индексирования [] для доступа к элементам двумерного массива?
# Каковы способы реализации операций с контейнерами?
# Какую конструкцию можно назвать «обобщенный алгоритм»?
# Каким образом объявить указатель на метод?
# Объясните разницу между указателем на функцию и указателем на метод.
# Каким образом получить адрес метода?
# Можно ли указателю на функцию присваивать адрес метода?
# Какие операции определены в С++ для косвенного вызова метода через указатель?
# Что такое «функтор»? Приведите пример функционального класса.
# Какими способами функтор вызывается?
# Можно ли использовать наследование при разработке функторов?
# Разрешается ли операцию вызова функции () определять как виртуальный метод? А как статический?
# В чем преимущества функторов перед указателями на функции?
# Объясните, зачем нужны адаптеры функторов? Какие виды адаптеров вы знаете?
# Как используются классы свойств при разработке функторов?
# Объясните, что такое «композиция» и приведите примеры?
# Объясните, чем отличается множественное наследование от простого?
# Приведите структуру и принцип действия паттерна Adapter.
# Сформулируйте основную проблему множественного наследования.
# Выполняется ли принцип подстановки при открытом множественном наследовании?
# Что такое виртуальное наследование? Каковы его преимущества и недостатки по сравнению с обычным наследованием?
# Может ли виртуальное наследование быть одиночным?
# Влияет ли виртуальное наследование на размер класса?
# Объясните, каким образом с помощью виртуального наследования можно вообще запретить наследование.
# Какие средства С++ составляют RTTI?
# Объясните разницу между повышающим, понижающим и перекрестным приведением.
# Какими свойствами должен обладать класс, чтобы с ним работал механизм RTTI?
# В чем приведение указателей отличается от приведения ссылок?
# Какие исключения связаны с механизмом RTTI?
# Что такое «поток» — дайте определение.
# Как классифицируются потоки, реализованые в библиотеках ввода/вывода С++?
# Что такое буферизация и зачем она нужна?
# Какие библиотеки ввода/вывода реализованы в С++ и чем они отличаются?
# Перечислите стандартные потоки и объясните их назначение.
# Зачем нужен процесс форматирования и когда он выполняется?
# Что такое «форматная строка», и в каких функциях она используется?
# Объясните назначение элементов спецификатора формата.
# Сколько спецификаторов формата может быть в форматной строке?
# Какой из элементов спецификатора формата не является умалчиваемым?
# Перечислите несколько известных вам обозначений типов в спецификаторе формата, и укажите их назначение.
# Сколько модификаторов типа вы знаете, и какую роль модификатор типа играет в спецификаторе формата?
# С помощью какого флага можно выровнять выводимое значение влево? А каким образом вывести ведущие нули?
# Какое действие оказывают на выводимую строку ширина, точнойть и флаги в спецификаторе формата?
# Для чего в спецификаторе формата может использоваться символ звездочка («*»)? Чем отличается действие этого символа при воде и при выводе?
# Каковы особенности ввода строк?
# Каким образом ограничить набор вводимых символов при вводе?
# Что является главной проблемой при использовании форматного ввода/вывода из библиотеки <cstdio>?
# Объясните, для чего нужны строковые потоки. Почему строковые потоки —всегда форматируемые?
# С помощью каких функций выполняется работа со строковыми потоками?
# Можно ли использовать тип string (и каким образом) со строковыми потоками?
# Объясните, в чем заключается различие между текстовым и двоичным файлом.
# Объясните, что означает «открыть» файл и «закрыть» файл?
# Каким образом внешний файл связывается с потоком?
# Можно ли один и тот же поток связать с разными файлами? А один и тот же файл с разными потоками?
# Перечислите режимы открытия файла. Чем отличается режим “r” от режима “a”?
# Какую роль в режиме открытия играет знак плюс («+»)?
# В каких случаях необходимо следить за ситуацией «конец файла»? Каким способом это делается?
# Можно ли текстовый файл открыть как двоичный? А двоичный — как текстовый?
# Какие функции ввода/вывода используются для обмена с текстовыми файлами?
# Перечислите функции ввода/вывода для работы с двоичными файлами.
# Какие функции реализованы в библиотеке <cstdio> для обеспечения прямого доступа к записям двоичного файла? Можно ли их использовать для работы с текстовыми файлами?
# Объясните назначение функции fseek().
# Чем отличается функция ftell() от функции fgetpos()?
# Объясните, что означает «перенаправление» потока? Какие потоки можно перенаправлять и куда?
# Каким образом перенаправление ввода можно использовать для ввода строк с пробелами?
# В чем преимущества объектно-ориентированной библитеки по сравнению с процедурной?
# В каких состояних может находиться поток? Каким образом отслживается состояние «конец потока»?
# Какие объектно-ориентированные потоки связаны со стандартными потоками?
# Чем отличаются объектно-ориентированные строковые потоки от процедурных строковых потоков?
# Каким образом строковые потоки можно использовать для ограничения ширины поля ввода? А можно ли с той же целью использовать строковые потоки <cstdio>?
# Сравните средства форматирования объектно-ориентированной и процедурной библиотеки.
# Каким образом ввести строку типа string с пробелами?
# Каково назначение флагов форматированя? Какие средства реализованы в библиотеке для работы с флагами форматирования?
# Что такое «манипулятор»? В чем преимущества манипуляторов перед флагами форматирования?
# Как связываются файлы с потоками в объектно-ориентированной библиотеке?
# Можно ли файлы, записанные функциями библиотеки <cstdio>, прочитать объектно-ориентированными средствами? А наоборот?
# Перечислите режимы открытия объектно-ориентированных файловых потоков. каким образом комбинируются режимы открытия файлоавых потоков?
# Обязательно ли закрывать файл, связанный с объектно-ориентированным файловым потоком? А открывать?
# Каким образом открыть файловый поток для чтения и записи одновременно?
# Как открыть файловый поток для дозаписи?
# Можно ли вывести значение переменной в двоичном виде и как это сделать?
# Разрешается ли наследовать от классов библиотеки ввода/вывода?
# Каким образом можно еренаправить объектно-ориентированный поток?
# Как используется буфер потока для копирования потока?
# Какими операциями выполняется форматированный ввод/вывод в файловые потоки? А неформатированный?
# Реализованы ли в объектно-ориентированной библиотеке средства прямого доступа к файловым потокам? Сравните их с аналогичными средствами библиотеки <cstdio>.
# С какими объектно-ориентированными потоками разрешается, и с какими не разрешается использовать средства прямого доступа?
# Покажите, каким образом можно выполнить перегрузку операций ввода/вывода для нового типа данных.
# Как выполняется обработка ошибок ввода/вывода в объектно-ориентированной библиотеке?
# Какое стандартное исключение генерируется при ошибках ввода/вывода? Обязательно ли оно генерируется?
# Чем стандартные широкие потоки отличаются от узких?
# Что такое — «локаль», и каково ее назначение?
# Как установить русский шрифт при выводе в консольное окно?
# Чем отличается ли ввод/вывод широких файловых потоков от узких?
# Перечислите все последовательные контейнеры стандартной библиотеки. Чем они отличаются друг от друга?
# Перечислите адаптеры последовательных контейнеров и дайте их подробную характеристику.
# Почему для адаптеров-очередей нельзя использовать вектор в качестве базового?
# Чем простая очередь queue отличается от приоритетной очереди priority_queue?
# Каким требованиям должны удовлетворять элементы контейнера?
# Могут ли быть указатели элементами контейнера? А итераторы?
# Почему нельзя использовать в качестве элементов контейнера стандартный интеллектуальный указатель auto_ptr?
# Зачем в контейнере list реализованы собственные методы сортировки поиска и слияния? Можно ли пользоваться соответствующими стандартными алгоритмами при обработке списка?
# Перечислите типовые виды конструкторов, с помощью которых можно создавать последовательный контейнер.
# Можно ли инициализировать контейнер элементами встроенного массива? А элементами другого контейнера? Какими способами это можно сделать?
# Почему конструктор инициализации, параметрами которого являются итераторы, сделан шаблонным во всех контейнерах?
# Какие методы реализованы в контейнере-векторе для доступа к элементам?
# Отличается ли функция at() доступа по индексу от перегруженной операции индексирования и чем?
# Перечислите методы контейнера deque, относящиеся к определению размеров контейнера.
# Чем метод size() отличается от метода capacity()? А в чем отличие этих методов от метода max_size()?
# Перечислите методы контейнера list, предназначенные для вставки удаления и замены элементов. Отличаются ли эти методы от соответствующих методов вектора и дека?
# Каким образом выполняются операции сравнения контейнеров?
# Разрешается ли изменять элемент ассоциативного контейнера, доступный в данный момент по итератору?
# Какие контейнеры называются ассоциативными и почему?
# Чем контейнер map отличается от контейнера multimap?
# Объясните, почему в ассоциативных контейнерах нельзя изменять элемент, доступный в данный момент по итератору.
# По каким причинам в контейнере-множестве не реализованы типовые операции объединения, пересечения, разности и другие?
# Как используется структура-пара в ассоциативных контейнерах?
# Объясните, что такое «критерий сортировки», и каким требованиям он должен удовлетворять? Какой критерий сортировки принят по умолчанию?
# Какими преимуществами обладает функция make_pair() по сравнению с конструктором pair()?
# Почему в контейнерах-отображениях операция индексирования перегружена, а в контейнерах-множествах — нет?
# Какие гарантии безопасности обеспечивают контейнеры стандартной библиотеки?
# Что такое «транзакционная гарантия безопасности» и чем она отличается от базовой?
# На какие 4 класса по надежности можно разделить все операции с контейнерами?
# Что такое «распределитель памяти» и зачем он нужен?
# Чем отличается битовый вектор bitset от битового вектора vector<bool>?
# Дайте определение итератора.
# Что такое «начальный» итератор и «конечный» итератор? Какие методы, связанные с итераторами, обязательно включает каждый контейнер?
# Чем константный итератор отличается от неконстантного?
# Объясните, что такое «недействительный» итератор. В каких случаях итераторы становятся недействительными?
# Какие категории итераторов вы знаете? Какие операции обязательно реализуются для всех категорий итераторов?
# К какому виду итераторов можно отнести встроенный указатель и почему?
# Какие вспомогательные функции для итераторов вы знаете? В каких случаях оправдано их применение?
# Какие адаптеры итераторов реализованы в библиотеке?
# Объясните, почему итераторы реализованы как вложенные классы в контейнерах.
# Чем отличаются итераторы вставки от обычных итераторов?
# Каким образом используются потоковые итераторы?
# Какие стандартные функторы реализованы в библиотеке STL? Каково их основное назначение?
# Для чего нужны адаптеры функторов bind1st() и bind2nd()?
# Как применяются адаптеры-отрицатели?
# Почему алгоритмы remove() не удаляют элементы из контейнеров? Как реально удалить элементы из контейнера?
# Чем отличается стабильная сортировка от обычной?
# Какую функцию выполняет алгоритмы unique()?
# Могут ли стандартные алгоритмы работать со строками?
# Нужно ли сортировать ассоциативные контейнеры?
# Можно ли алгоритмы для работы с множествами применять для последовательных контейнеров? При каких условиях?
# Какие алгоритмы предназначены для заполнения контейнера значениями? С какими контейнерами они могут работать?
# Каким образом заполнить с помощью алгоритма generate() последовательный контейнер, не имеющий ни одного элемента?
# Перечислите алгоритмы, предназначенные для операций с каждым элементом контейнера.
# Можно ли с помощью алгоритма for_each() изменить элементы контейнера?


''PS Обращаю Ваше внимание на то, что это - базовый список. В него не включены вопросы, которые обсуждаются на лекциях, поэтому не стоит считать, что они не будут заданы Вам на экзамене.''

''С уважением, Ковалев Антон''
81
правка

Навигация