Что такое структура данных карты в C++

Какая структура данных используется для следующей строки кода на С++?

map <char, int> dict;

Это хеш-таблица?


person programmingIsFun    schedule 31.08.2012    source источник


Ответы (4)


std::unordered_map использует хеширование для хранения своих объектов.

person Rapptz    schedule 31.08.2012

Стандарт не требует какой-либо конкретной реализации std::map. Это только дает необходимые операции и их сложность. Эти факторы приводят к фактическому выбору реализации, который обычно представляет собой красно-черное дерево.

Глава, в которой перечислены требования для std::map, — это 23.2.4 Associative Containers в C++11.

person pmr    schedule 31.08.2012

Он обычно реализуется с помощью самобалансирующегося BST. Реализация на самом деле зависит от компилятора.

std::map<char, int> dict;

char — это ключ, а int — соответствующее значение.

person Chris Dargis    schedule 31.08.2012
comment
Я не думаю, что есть какие-либо требования для реализации красно-черного дерева. Под капотом может быть что угодно, если следовать семантике. - person TJD; 31.08.2012

Он использует красно-черное дерево для организации ключей по порядку.

Вот почему вы можете перебирать его в порядке возрастания, а ключевой объект должен иметь перегруженный оператор‹.

person FrostNovaZzz    schedule 31.08.2012