Вывод содержимого map

Создаю map.Порядок вывод содержимого получается почему-то зависим от содержимого map.Т.е. если первой парой будет "Ааааааа" и "Ввввввввв", а второй "Ааааава Ааааа" и "Ввв", то выведуться они так как поступали в map. А если ввод пар поменять местами порядок их вывода не поменяется.Как так?
14 ответов

Ну так map же ассоциативный контейнер, а не последовательный, поэтому имеет место автоматическая сортировка содержимого.


ассоциативный контейнер,
дело не в том что он ассоциативный, а в том что сортируеммый.


Хорошо. И как тогда осуществлять контроль за соответствием заполнения и вывода?


Если хочешь, чтобы элементы хранились точно в том порядке, в каком были добавлены, необходимо использовать другой контейнер. 


дело не в том что он ассоциативный, а в том что сортируеммый.
Джосьютис Н. C++ стандартная библиотека - для профессионалов (гл. 5):"Ассоциативные контейнеры представляют собой отсортированные коллекции...""Ассоциативные контейнеры автоматически сортируют свои элементы"


Джосьютис Н. C++ стандартная библиотека - для профессионалов (гл. 5):"Ассоциативные контейнеры представляют собой отсортированные коллекции...""Ассоциативные контейнеры автоматически сортируют свои элементы"
Во первых эта фраза относится только к стловским контейнерам, а не к любому ассоциативному..Во вторых смена порядка , зависит именно от сортируемости, а не от ассоциавности.. например в сортируемом векторе тоже не будет сохранен порядок элементов относительно их заполнения.


в где написано что std::map чета сортирует?имхо просто он так реализован. никто не гарантирует что порядок будет сохранен, впрочем, как и не исключает этого (по крайней мере я такого не видел в стандарте).


в где написано что std::map чета сортирует?
в описании контейнера


В основе работы map лежит бинарное дерево, которое по определению является отсортированной структурой представления данных


Map is a Sorted Associative ContainerТут конечно не написано, что последовательный доступ к элементам будет давать отсортированную последовательность... Но и не сказано так же, что порядок следования будет в порядке добавления.


где написано что std::map чета сортирует?
Джосьютис Н. C++ стандартная библиотека - для профессионалов (гл. 5):"Ассоциативные контейнеры представляют собой отсортированные коллекции...""Ассоциативные контейнеры автоматически сортируют свои элементы"
  


allБольшое спасибо за обсуждение. Но решения я так и не понял


Джосьютис Н. C++ стандартная библиотека - для профессионалов (гл. 5):"Ассоциативные контейнеры представляют собой отсортированные коллекции...""Ассоциативные контейнеры автоматически сортируют свои элементы"Во первых эта фраза относится только к стловским контейнерам, а не к любому ассоциативному..
Если под stl'ом, как это обычно бывает, понимать std либу, то нет, не применима. Смотреть std::tr1::unordered_map. Ассоциативнее некуда. И неотсортированнее некуда[привет хеш]
Хорошо. И как тогда осуществлять контроль за соответствием заполнения и вывода? 
Используй std::vector > или что то аналоигичное и будет тебе счастье. ну можно смотреть ещё в сторону boost::multi_index.


Смотреть std::tr1::unordered_map
где кроме патченной 2008 студии есть tr1?
то нет, не применима
книга писалась за долго, до появления tr1