Каковы общие варианты использования стандартных контейнеров библиотеки С++?
- BitSet
- Deque
- список
- Карта
- MultiMap
- мультимножеством
- priority_queue
- очереди
- установить
- Стек
- вектор
Например, карта, как правило, лучше подходит для парного поиска.
Каковы общие варианты использования стандартных контейнеров библиотеки С++?
Например, карта, как правило, лучше подходит для парного поиска.
Изображение стоит тысячи слов.
Он доступен от nolyc, информативного бота ## С++ на Freenode, используя команду "Выбор контейнера" или "containerchoice". Ссылка на эту фотографию, которую вы получили в ответ, размещена на adrinael.net, что предполагает, что мы должны поблагодарить Adrinael, члена сообщества Freenode ## С++.
bitset
- используется для хранения бит. Общее назначение - хранить значения некоторых флагов. Для этого вам не нужно больше 1 бит.
deque
- двойная очередь - push_back, push_front, pop_back и pop_front - методы базового класса. "Не отсортировано" (неупорядоченный) контейнер.
list
- связанный список. Этот контейнер не является непрерывным для памяти. Время добавления и удаления элементов - O (1), но поиск определенного элемента - O (n). Неупорядоченный контейнер.
map
- контейнер, хранит пары (std:: pair). Первый - это ключ - каждый элемент с карты должен иметь уникальный ключ. Карта представляется как дерево, поэтому поиск элемента на карте - это n * log (n). Этот контейнер всегда сортируется, поэтому добавление и удаление элементов может вызвать больше времени - дерево (структура данных) является двоичным и сбалансированным.
multimap
- почти то же, что и std:: map, но позволяет пары с теми же ключами. Например, multimap может содержать элементы: (666, "alabala" ), (666, "asdfg" ), в то время как стандартная std:: map не может. Этот контейнер также сортируется.
multiset
- снова - то же, что и set, но с повторяемыми элементами. set - ну, это также всегда отсортированный контейнер STL. Например, набор {1, 2, 3}, и когда вы пытаетесь добавить '1' в этот набор, он не будет добавлен, так как уже есть такой элемент. (это аналогично математическому множеству). Таким образом, мультимножество позволяет использовать несколько элементов с одинаковым значением, например {1, 1, 1, 2, 3, 4, 4, 4, 4} - это правильный мультимножество, а не набор. Добавление и удаление элемента в std:: set по-прежнему является логарифмическим временем, поскольку оно представлено как двоичное, отсортированное и сбалансированное дерево.
priority_queue
- его первый элемент всегда является самым большим из содержащихся в нем элементов, в соответствии с некоторым строгим условием слабого упорядочения. Основная функциональность - push_back и pop_back.
queue
- Структура FIFO - сначала во-первых. (или аналогично LILO - Last In - Last Out). Это аналог стандартной очереди - когда вы ходите в магазин и начинаете ждать в очереди, первая из них будет первой. Вы можете просто push_back и pop_front. Неупорядоченный контейнер.
set
- Я уже описал это в разделе мультимножества.
stack
- LIFO - Last In - First Out - стек. Основная функциональность - push_back, pop_back. Неупорядоченный контейнер.
vector
- аналог стандартного массива С++. Он рассматривался как обычный массив, непрерывный по памяти, может быть передан программе C (передающей адрес первого элемента). Неупорядоченный контейнер.
ВАЖНОЕ ПРИМЕЧАНИЕ: Я описал базовую функциональность, а не целую. Подробнее читайте CPlusPlus.com.