Форум программистов, компьютерный форум CyberForum.ru

Контейнер map с сохранением порядка вставки элементов - C++

Восстановить пароль Регистрация
 
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
13.07.2015, 17:08     Контейнер map с сохранением порядка вставки элементов #1
Можно ли в контейнере расположить ключи так, чтобы они не были отсортированы в порядке убывания или возрастания.
Например я ложу в контейнер такие ключи:
C++
1
2
3
4
map<string,string> st;
st.insert(make_pair("A","A1"));
st.insert(make_pair("C","C1"));
st.insert(make_pair("B","B1"));
Но "map" располагает ключи в алфавитном порядке автоматически, то есть:
C++
1
2
3
A:A1
B:B1
C:C1
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2015, 17:08     Контейнер map с сохранением порядка вставки элементов
Посмотрите здесь:

Отсортировать контейнер map по значению элементов C++
контейнер map C++
C++ Контейнер map ?
C++ Контейнер map
Контейнер map. Осуществить ввод элементов и поиск по ключу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1533 / 981 / 239
Регистрация: 05.06.2014
Сообщений: 2,951
13.07.2015, 17:13     Контейнер map с сохранением порядка вставки элементов #2
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Можно все класть в вектор/список пар, но там поиска по ключу не будет. Так что, разве что писать свой контейнер.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
13.07.2015, 17:15     Контейнер map с сохранением порядка вставки элементов #3
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
может есть другой контейнер для этого?
unordered_map ?
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
13.07.2015, 17:15     Контейнер map с сохранением порядка вставки элементов #4
Смотри в документации: unordered_map
Renji
1533 / 981 / 239
Регистрация: 05.06.2014
Сообщений: 2,951
13.07.2015, 17:16     Контейнер map с сохранением порядка вставки элементов #5
Цитата Сообщение от Raali Посмотреть сообщение
unordered_map ?
Он же сортирует ключи по их хешу. То есть, просто перемешивает в кашу. А ТС хотел сохранить порядок добавления.
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
13.07.2015, 17:17     Контейнер map с сохранением порядка вставки элементов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Готовое есть в boost.

Можно сами элементы хранить в векторе (который сохранит порядок), а в map держать индексы этих элементов из вектора. При доступе по ключу получаем индекс, затем элемент из вектора. При обходе по порядку - пользуемся вектором. Но это от задачи зависит. Что там удаляется-добавляется в процессе и куда.
ct0r
C++/Haskell
 Аватар для ct0r
1549 / 568 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
13.07.2015, 17:34     Контейнер map с сохранением порядка вставки элементов #7
Самое оптимальное - использовать boost::multi_index_container с двумя индексами - один по ключу, другой по порядку добавления.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2015, 17:46     Контейнер map с сохранением порядка вставки элементов
Еще ссылки по теме:

C++ Контейнер map
Перевернуть контейнер map? C++
Map контейнер сортировка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
13.07.2015, 17:46  [ТС]     Контейнер map с сохранением порядка вставки элементов #8
спасибо всем, буду использовать контейнер из буста
Yandex
Объявления
13.07.2015, 17:46     Контейнер map с сохранением порядка вставки элементов
Ответ Создать тему
Опции темы

Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru