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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
#1

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

13.07.2015, 17:08. Просмотров 373. Ответов 7
Метки нет (Все метки)

Можно ли в контейнере расположить ключи так, чтобы они не были отсортированы в порядке убывания или возрастания.
Например я ложу в контейнер такие ключи:
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++
C++ Ассоциативный контейнер типа map
контейнер map C++
C++ Контейнер map ?
C++ Контейнер map
Контейнер map. Осуществить ввод элементов и поиск по ключу C++
C++ Контейнер map
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1807 / 1225 / 286
Регистрация: 05.06.2014
Сообщений: 3,511
13.07.2015, 17:13     Контейнер map с сохранением порядка вставки элементов #2
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Можно все класть в вектор/список пар, но там поиска по ключу не будет. Так что, разве что писать свой контейнер.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,054
Завершенные тесты: 1
13.07.2015, 17:15     Контейнер map с сохранением порядка вставки элементов #3
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
может есть другой контейнер для этого?
unordered_map ?
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,345
13.07.2015, 17:15     Контейнер map с сохранением порядка вставки элементов #4
Смотри в документации: unordered_map
Renji
1807 / 1225 / 286
Регистрация: 05.06.2014
Сообщений: 3,511
13.07.2015, 17:16     Контейнер map с сохранением порядка вставки элементов #5
Цитата Сообщение от Raali Посмотреть сообщение
unordered_map ?
Он же сортирует ключи по их хешу. То есть, просто перемешивает в кашу. А ТС хотел сохранить порядок добавления.
DrOffset
6864 / 4075 / 928
Регистрация: 30.01.2014
Сообщений: 6,870
13.07.2015, 17:17     Контейнер map с сохранением порядка вставки элементов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Готовое есть в boost.

Можно сами элементы хранить в векторе (который сохранит порядок), а в map держать индексы этих элементов из вектора. При доступе по ключу получаем индекс, затем элемент из вектора. При обходе по порядку - пользуемся вектором. Но это от задачи зависит. Что там удаляется-добавляется в процессе и куда.
ct0r
Игогошка!
1762 / 664 / 42
Регистрация: 19.08.2012
Сообщений: 1,262
Завершенные тесты: 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 с сохранением порядка вставки элементов
Еще ссылки по теме:

Перевернуть контейнер map? C++
Map контейнер сортировка C++
C++ Контейнер map<int, some*>
C++ Контейнер map
C++ Контейнер map

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru