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

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

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

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

13.07.2015, 17:08. Просмотров 406. Ответов 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
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2015, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Контейнер map с сохранением порядка вставки элементов (C++):

Отсортировать контейнер map по значению элементов - C++
Есть заполненный контейнер unordered_map (ну или просто map) Нужно отсортировать его по значению или сделать сортированный по значению...

Контейнер map. Осуществить ввод элементов и поиск по ключу - C++
Поиск работает, но как сделать чтобы чтобы можно было вводить элементы с клавиатуры и искать по ключу вводом с клавиатуры? #include...

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? - C++
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Контейнер map - C++
Здравствуйте, работаю с контейнером map, анализирую текст, получаю записи типа &quot;слово: число его появлений в тексте&quot;. Хотелось бы вывести...

Контейнер map - C++
Стоит задача реализовать контейнер map. Вопрос возникает при реализации итератора для этого контейнера. В итераторе должны быть реализованы...

контейнер map - C++
Помогите, пожалуйста дописать программу. Определите карту, в которой ключом является фамилия семьи, а значением вектор, который содержит...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Renji
1916 / 1314 / 298
Регистрация: 05.06.2014
Сообщений: 3,757
13.07.2015, 17:13 #2
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Можно все класть в вектор/список пар, но там поиска по ключу не будет. Так что, разве что писать свой контейнер.
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
13.07.2015, 17:15 #3
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
может есть другой контейнер для этого?
unordered_map ?
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
13.07.2015, 17:15 #4
Смотри в документации: unordered_map
0
Renji
1916 / 1314 / 298
Регистрация: 05.06.2014
Сообщений: 3,757
13.07.2015, 17:16 #5
Цитата Сообщение от Raali Посмотреть сообщение
unordered_map ?
Он же сортирует ключи по их хешу. То есть, просто перемешивает в кашу. А ТС хотел сохранить порядок добавления.
2
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,093
13.07.2015, 17:17 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
А мне нужно чтобы ключи располагались именно в той последовательности, в которой я их туда положил, может есть другой контейнер для этого?
Готовое есть в boost.

Можно сами элементы хранить в векторе (который сохранит порядок), а в map держать индексы этих элементов из вектора. При доступе по ключу получаем индекс, затем элемент из вектора. При обходе по порядку - пользуемся вектором. Но это от задачи зависит. Что там удаляется-добавляется в процессе и куда.
1
ct0r
Игогошка!
1773 / 675 / 42
Регистрация: 19.08.2012
Сообщений: 1,287
Завершенные тесты: 1
13.07.2015, 17:34 #7
Самое оптимальное - использовать boost::multi_index_container с двумя индексами - один по ключу, другой по порядку добавления.
1
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
13.07.2015, 17:46  [ТС] #8
спасибо всем, буду использовать контейнер из буста
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2015, 17:46
Привет! Вот еще темы с ответами:

Контейнер map ? - C++
Не совсем удается разобраться Не удается разобраться с ассоциативными контейнерами ! Как выглядит объявление функции в псевдокоде? Что...

Контейнер map - C++
в программе используется ассоциативный массив, идентификатором которого являются символы проблема в том что появляется элемент с...

Контейнер map - C++
Cоздать ассоциативный список имен (ключей), телефонов. Осуществить поиск по именам. Дополнить его данным адрес. Добавить возможности...

Map контейнер сортировка - C++
Добрый день. Собственно необходимо вывести отсортированный мап контейнер по числу гласных в слове. Вводить строку и выводить мап...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.07.2015, 17:46
Ответ Создать тему
Опции темы

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