Главная / Программирование /
Программирование на С/С++ / Тест 111
Программирование на С/С++ - тест 111
Упражнение 1:
Номер 1
Какие цели преследовались и каким ценностям отдавалось предпочтение при создании STL?
Ответ:
 (1) максимальная общность 
 (2) максимальная эффективность 
 (3) максимальная понятность кода STL 
 (4) следование семантики работы с передачей по значению (семантика значений) 
 (5) следование фон-нэймоновской модели 
Номер 2
В чём заключается архитектурное свойств STL - гарантии вычислительной сложности?
Ответ:
 (1) минимально возможный расход памяти для алгоритма 
 (2) гарантированное ограничение максимальной сложности работы алгоритма 
 (3) гарантии достижения минимально-возможной сложности работы алгоритма в каждом конкретном случае 
 (4) гарантии ограничения максимума расходуемом алгоритмом памяти 
Номер 3
В чём заключается архитектурные свойства STL - взаимозаменяемость компонентов и унификация интерфейса?
Ответ:
 (1) одни и те же функции для разных типов контейнеров будут выполняться с одной и той же производительностью 
 (2) различные контейнеры STL имеют похожую по смыслу сигнатуру основных методов 
 (3) различные контейнеры STL имеют одну и ту же сигнатуру основных методов и могут быть использованы в одних и тех же алгоритмах 
 (4) если созданный пользовательский шаблон контейнера поддерживает набор необходимых интерфейсов, то он может быть использован в обобщённых алгоритмах STL 
Упражнение 2:
Номер 1
Какие основные элементы STL инкапсулируют хранение различных значений и объектов?
Ответ:
 (1) контейнеры STL 
 (2) обобщённые алгоритмы STL 
 (3) итераторы STL 
 (4) адаптеры STL 
 (5) функциональные объекты 
Номер 2
Какие основные элементы STL абстрагируют перемещение по коллекциям объектов?
Ответ:
 (1) контейнеры STL 
 (2) обобщённые алгоритмы STL 
 (3) итераторы STL 
 (4) адаптеры STL 
 (5) функциональные объекты 
Номер 3
Какие основные элементы STL решают вопросы обработки данных, размещённых в стандартных контейнерах STL?
Ответ:
 (1) контейнеры STL 
 (2) обобщённые алгоритмы STL 
 (3) итераторы STL 
 (4) адаптеры STL 
 (5) функциональные объекты 
Упражнение 3:
Номер 1
Какие контейнеры STL являются последовательными?
Ответ:
 (1) вектор 
 (2) множество 
 (3) список 
 (4) дека 
 (5) отображение 
Номер 2
Какой из последовательных контейнеров требует самое большое время для доступа к элементам контейнера?
Ответ:
 (1) вектор 
 (2) встроенный массив С++ 
 (3) список 
 (4) дека 
Номер 3
Какой из последовательных контейнеров обеспечивает наилучшее время вставки элемента?
Ответ:
 (1) вектор 
 (2) встроенный массив С++ 
 (3) список 
 (4) дека 
Упражнение 4:
Номер 1
Какова сложность поиска перебором в последовательных контейнерах?
Ответ:
 (1) O(1) 
 (2) O(ln(N)) 
 (3) O(N) 
 (4) O(N**2 
Номер 2
Какие утверждения насчёт ассоциативных контейнеров верны?
Ответ:
 (1) ассоциативные контейнеры предоставляют быстрый доступ к элементам по ключу 
 (2) ассоциативные контейнеры - это контейнеры переменной длины 
 (3) в ассоциативных контейнерах все ключи должны быть уникальны 
 (4) для ассоциативных контейнеров гарантируется размещение соседних элементов в смежной оперативной памяти 
Номер 3
Контейнеры отличаются друг от друга:
Ответ:
 (1) временем выполнения одних и тех же операций 
 (2) интерфейсом основных операций 
 (3) действительностью итераторов после модификации контейнера - инвалидацией итераторов - когда происходит операции изменения контейнера 
 (4) расход памяти на хранение данных 
Упражнение 5:
Номер 1
Каковы основные особенности контейнера STL вектор?
Ответ:
 (1) произвольный доступ к элементам 
 (2) быстрое удаление и добавление последнего элемента контейнера 
 (3) быстрое удаление и добавление первого элемента контейнера 
 (4) полная гарантия корректности итераторов после вставки и удаления 
 (5) гарантия непрерывного размещения объектов контейнера в памяти 
Номер 2
Какие встроенные типы контейнера являются итераторами?
Ответ:
 (1) iterator 
 (2) pointer 
 (3) reverse_iterator 
 (4) const_reference 
 (5) size_type 
Номер 3
Какова сложность создания копии контейнера вектор?
Ответ:
 (1) O(1) 
 (2) O(ln(N)) 
 (3) O(N) 
 (4) O(N**2 
Упражнение 6:
Номер 1
Какие отличия дека от вектора?
Ответ:
 (1) последовательный доступ к элементам 
 (2) быстрая вставка и удаление в начало контейнера 
 (3) медленная вставка и удаление в конец контейнера 
 (4) быстрый поиск элемента по значению 
Номер 2
Какие отличия списка от вектора?
Ответ:
 (1) последовательный доступ к элементам 
 (2) быстрая вставка и удаление в начало контейнера 
 (3) медленная вставка и удаление в конец контейнера 
 (4) инвалидация итераторов не происходит при модификации контейнера 
 (5) отсутствие гарантий размещения данных в непрерывном куске памяти 
Номер 3
По каким причинам для списка не подходят алгоритмы сортировки, реализованные как стандартные алгоритмы?
Ответ:
 (1) итератор списка не поддерживает всех необходимых для стандартного алгоритма методов 
 (2) список может иметь достаточно большое время доступа к элементам в середине списка 
 (3) для сравнения элементов списка требуется оператор проверки эквивалентности элементов списка 
 (4) сигнатура метода вставки в список отличается от сигнатуры методов вставки других стандартных контейнеров 
Упражнение 7:
Номер 1
В чем отличие ассоциативных контейнеров от последовательных контейнеров?
Ответ:
 (1) время доступа значительно больше чем для любого последовательно контейнера 
 (2) хранимые данные должны иметь функцию сравнения 
 (3) имеются ограничения на модификацию хранимых данных 
 (4) добавление в начало и конец контейнера всегда константно 
Номер 2
Каким образом определяется эквивалентность ключей в ассоциативных контейнерах?
Ответ:
 (1) используется специальная функция ключа is_equivalent() 
 (2) используется оператор равенства "==" 
 (3) используются операторы больше и меньше и если один ключ не меньше другого и наоборот, то ключи считаются эквивалентны 
 (4) используется только оператор меньше и если один ключ не меньше другого и наоборот, то ключи считаются эквивалентны 
Номер 3
Какие данные нельзя менять в ассоциативном контейнере?
Ответ:
 (1) в множестве и мультимножестве нельзя модифицировать хранимые объекты 
 (2) в отображении и мульти-отображении нельзя менять ни хранимый объект ни его ключ 
 (3) в отображении и мульти-отображении нельзя хранимый объект, а его ключ менять можно 
 (4) в отображении и мульти-отображении нельзя ключ, а хранимый объект менять можно 
Упражнение 8:
Номер 1
Какие утверждения про обобщённые алгоритмы верны?
Ответ:
 (1) обобщённые алгоритмы предоставляют обобщённое решение разных задач обработки данных в обобщённых контейнерах 
 (2) для любого алгоритма существует копирующая версия алгоритма, которая переносит обработанные данные в другой контейнер 
 (3) обобщённые алгоритмы упорядочивания требуют определения операции сравнения элементов 
 (4) стандартом утверждена строгая классификация обобщённых алгоритмов 
Номер 2
Какие утверждения об отношениях сравнения, используемых в обобщённых алгоритмах STL верны?
Ответ:
 (1) операции сравнения, используемые в обобщённых алгоритмах STL являются унарными предикатами 
 (2) отношения сравнения должны быть транзитивны 
 (3) позволяют установить эквивалентность 
 (4) объекты считаются эквивалентными если оператор равенства возвращает true 
Номер 3
Какие данные на вход обычно принимают обобщённые алгоритмы?
Ответ:
 (1) предикатную функцию 
 (2) функцию выделения памяти 
 (3) итераторы контейнера, данные которого обрабатываются  
 (4) итераторы контейнера, куда копируются данные 
Номер 4
Какие утверждения про различные виды обобщённых алгоритмов верны?
Ответ:
 (1) различные обобщённые алгоритмы сортировки STL отличаются друг от друга максимальной и средней сложностью 
 (2) различные обобщённые алгоритмы сортировки STL могут отличаются друг от друга потребляемой для выполнения сортировки памятью 
 (3) реализуемые обобщёнными алгоритмами операции над множествами выполняются над объектами, находящимися в любых контейнерах STL 
 (4) обобщённые алгоритмы на числах могут работать только с контейнерами, хранящими встроенные числовые типы 
Упражнение 9:
Номер 1
Какие утверждения про итераторы верны?
Ответ:
 (1) итераторы - это обобщённые указатели 
 (2) итераторы предназначены для обхода последовательности объектов в обобщённом контейнере 
 (3) классы итераторов различаются по быстродействию операций с ними 
 (4) любой итератор может быть успешно разыменован 
Номер 2
Какому классу итераторов эквивалентны указатели С++?
Ответ:
 (1) итераторы входные 
 (2) итераторы выходные 
 (3) итераторы однонаправленные 
 (4) итераторы двунаправленные 
 (5) произвольного доступa 
Номер 3
//====================== start of sample.h ==========================
#include <algorithm>
int main(int argc, char* argv[])
{
size_t N = 40;
int A[N];
size_t B[N*2];
char C[N];
int D[N];
std::replace(&B[0], &B[N/2], 0, 42);
std::replace(C, (C+N+1), 'D', 'T');
std::copy(&A[0], &A[N-1], &D[0]);
std::copy(A, (A+N), D);
return 0;
}
//====================== end of sample.h ==========================
]]>В каких из вызовов обобщённых алгоритмов встроенные массивы С++ использованы без ошибок?
Ответ:
 (1) std::replace(&B[0], &B[N/2], 0, 42); 
 (2) std::replace(C, (C+N+1), 'D', 'T'); 
 (3) std::copy(&A[0], &A[N-1], &D[0]); 
 (4) std::copy(A, (A+N), D); 
Номер 4
Каким классам итераторов доступны операции записи объекта?
Ответ:
 (1) итераторы входные 
 (2) итераторы выходные 
 (3) итераторы однонаправленные 
 (4) итераторы двунаправленные 
 (5) произвольного доступa 
Упражнение 10:
Номер 1
Разыменование какого итератора ведёт к вставке элемента в контейнер?
Ответ:
 (1) потоковый итератор 
 (2) итератор произвольного доступа 
 (3) итератор вставки 
 (4) изменяемый итератор прямого обхода 
 (5) никакой из перечисленных 
Номер 2
В чём основное отличие итератора вставки от других итераторов STL?
Ответ:
 (1) итератор вставки поддерживает специальный метод вставки, которого нет у итератора произвольного доступа 
 (2) итератор произвольного доступа позволяет добавить элемент только в конец, а итератор вставки может вставить и в начало 
 (3) итератор вставки обеспечивает вставку данных с максимальным быстродействием 
 (4) разыменование оператора вставки ведёт к вставке элемента в контейнер 
 (5)  
Номер 3
Какие утверждения о назначении потоковых итераторов верны?
Ответ:
 (1) входной потоковый итератор предназначен для чтения объектов из входного потока 
 (2) выходной потоковый итератор предназначен для записи объектов в выходной поток 
 (3) выходной итератор, имеющий специальное значение служит маркером конца потока 
 (4) входной итератор, имеющий специальное значение служит маркером конца потока 
Упражнение 11:
Номер 1
//====================== start of sample.cpp ==========================
std::merge(
vector1.begin(),
vector1.end(),
std::istream_iterator(cin),
std::istream_iterator(),
std::back_inserter(list1)
);
//====================== end of sample.cpp ==========================
]]>Который по номеру из параметров из вызова стандартного алгоритма, приведённого выше служит для индикации конца потока?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
 (5) 5 
Номер 2
//====================== start of sample.cpp ==========================
template <typename ForwardIterator, typename T>
void replace (
ForwardIterator first,
ForwardIterator last,
const T& x, const T& y)
{
while(first != last)
{
if (*first == x)
*first = y;
++first;
}
return first;
}
//====================== end of sample.cpp ==========================
]]>Каковы требования к итераторам, участвующим в алгоритме replace(), имплементация которого приведена выше, корректны?
Ответ:
 (1) тип ForwardIterator должен поддерживать операцию разыменования 
 (2) объект типа Т должен поддерживать операцию сравнения "равно" 
 (3) объект типа Т должен поддерживать операцию сравнения "меньше" 
 (4) тип ForwardIterator должен поддерживать перезапись объекта, хранящегося в элементе контейнера, на который ссылается итератор 
 (5) тип ForwardIterator должен поддерживать вставку нового элемента в контейнер 
Номер 3
//====================== start of sample.cpp ==========================
template <typename T>
class multiplies: public binary_function<T,T,T>
{
public:
T operator() (const T& x, const T& y) const {
return x * y;
}
};
//====================== end of sample.cpp ==========================
]]>Какие утверждения про приведённый выше код функтора multiplies верны?
Ответ:
 (1) содержащегося кода "operator()" недостаточно, должны быть реализованы ещё некоторые операторы 
 (2) наследование от шаблона binary_function позволяет получить типы для "саморефлексии" 
 (3) код операции умножения может быть заменён на любые другие арифметические или логические операции 
 (4) приведённый функтор может быть использован для передачи выполняемой операции в функции алгоритмов 
Упражнение 12:
Номер 1
Какими типами конкретизируются контейнерные адаптеры?
Ответ:
 (1) типами хранимых в контейнере элементов 
 (2) типами адаптируемых контейнеров 
 (3) типами итераторов вставки в контейнер 
 (4) значениями хранимых элементов 
Номер 2
//====================== start of sample.cpp ==========================
bind2nd(greater<int>(), 100);
//====================== end of sample.cpp ==========================
]]>Какие утверждения про приведённый выше адаптер верны?
Ответ:
 (1) это связывающий адаптер 
 (2) это отрицающий адаптер 
 (3) выполняется преобразование функционального объекта с двумя параметрами в функциональный объект с одним параметром 
 (4) результатом будет функциональный объект, возвращающий разницу между входным параметром типа int и значением 100 
Номер 3
Чем отличаются неупорядоченные ассоциативные контейнеры, добавленные в стандарте С++ 11 от уже имеющихся ассоциативных контейнеров?
Ответ:
 (1) амортизированное константное время выполнения основных операций 
 (2) неупорядоченный ассоциативный контейнер может быть инициализирован встроенным массивом без копирования элементов массива и выделения памяти 
 (3) как параметр шаблона требуются функтор для проверки равенства ключей 
 (4) как параметр шаблона требуются функтор для вычисления хеш-функции 
 (5) перемещение по неупорядоченному ассоциативному контейнеру возможно только в одном направлении