С++ вопросы : Вопрос 1 : 68

В чём заключается разница между стандартными контейнерами vector, deque, list, set в STL (C++)?

 

Уважаемые учащиеся ниже Вы сможете увидеть ответ, перед тем, как ответить, пожалуйста, постарайтесь написать для себя ответ на черновике, и только потом сравните наш ответ с Вашим: 

 

 

 

Верно ли наше решение?

Ответ:

vector

последовательный контейнер, обеспечивающий возможность быстрого доступа к произвольному элементу с помощью операций индексирования [] или at()
изменение размеров вектора (в т.ч. неявное при вызове методов push_back(), pop_back(), insert(), erase()) является дорогостоящей операцией
предоставляет дополнительные средства для управления резервированием памяти reserve() и capasity()
предоставляет итераторы произвольного доступа

list

последовательный контейнер, оптимизированный под операции вставки и удаления элементов
операции индексирования [] и at() отсутствуют по причине их низкой эффективности
предоставляет дополнительные средства для эффективного манипулирования со списками: 
splice(), sort(), merge(), reverce(), 
а также операции для удаления элементов из списка: 
remove(), remove_if(), unique()
предоставляет двунаправленные итераторы

deque

последовательный контейнер, оптимизорованный таким образом, что головные и концевые операции для него почти также эффективны, как для списков, а индексирование почти также эффективно, как для векторов; 
однако, вставка и удаление элемента где-нибудь в "середине контейнера" неэффективны также, как для векторов
предоставляет итераторы произвольного доступа

set

ассоциативный контейнер, в котором ключом является само значение элемента
все элементы уникальны по значению и хранятся в постоянно упорядоченном состоянии; 
в качестве критерия сравнения по-умолчанию используется операция <
реализация в виде бинарного дерева обеспечивает приемлимую эффективность для вставки, удаления и поиска элементов (быстрее чем vector, но медленнее чем list)
предоставляет двунаправленные итераторы
1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.