boost :: unordered_map поддерживает порядок вставки? - PullRequest
4 голосов
/ 22 октября 2009

Я ищу контейнер, который обеспечивает интерфейс, похожий на std :: map, но поддерживает порядок вставки элементов. Поскольку на карте не будет слишком много элементов, производительность поиска не является большой проблемой. Будет ли boost :: unordered_map работать в этом случае? т.е. поддерживает ли он порядок вставки. Я новичок в улучшении библиотеки и, следовательно, хочу знать, что именно означает «неупорядоченный»?

Ответы [ 3 ]

18 голосов
/ 22 октября 2009

Читать о Boost.Multiindex . Это дает вам возможность создать контейнер, который имеет доступ к данным по ключу (например, std :: map) и последовательный доступ к данным (например, std :: list).

Это пример .

9 голосов
/ 22 октября 2009

unordered_map не поддерживает порядок вставки. Неупорядоченный в этом случае означает, что наблюдаемый порядок элементов (то есть, когда вы их перечисляете) не определен и произвольн. На самом деле, я ожидал бы, что порядок элементов в unordered_map может измениться за время существования карты из-за перефразирования при изменении размера карты (хотя это зависит от реализации)

6 голосов
/ 22 октября 2009

Когда я нуждался в этом в прошлый раз, я использовал std::vector< std::pair<const Key, Value> >. Мне не понадобился большой интерфейс std::map, поэтому я не стал беспокоиться о нем, но, похоже, довольно просто шлепнуть подобный карте интерфейс вокруг этого.

Также обязательно посмотрите ответы на на этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...