Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод содержимого map 
:(
    Опции темы
Rutti
Дата 28.8.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



Создаю map<string, string>.
Порядок вывод содержимого получается почему-то зависим от содержимого map.
Т.е. если первой парой будет "Ааааааа" и "Ввввввввв", а второй "Ааааава Ааааа" и "Ввв", то выведуться они так как поступали в map. А если ввод пар поменять местами порядок их вывода не поменяется.
Как так?
PM MAIL   Вверх
Annihilator
Дата 28.8.2008, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



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


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
mes
Дата 28.8.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Annihilator @  28.8.2008,  21:45 Найти цитируемый пост)
ассоциативный контейнер,

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



--------------------
PM MAIL WWW   Вверх
Rutti
Дата 30.8.2008, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



Хорошо. И как тогда осуществлять контроль за соответствием заполнения и вывода?
PM MAIL   Вверх
W4FhLF
Дата 30.8.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



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


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Annihilator
Дата 30.8.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Цитата(mes @  29.8.2008,  01:54 Найти цитируемый пост)
дело не в том что он ассоциативный, а в том что сортируеммый.


Цитата

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



--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
mes
Дата 31.8.2008, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



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

Во первых эта фраза относится только к стловским контейнерам, а не к любому ассоциативному..
Во вторых смена порядка , зависит именно от сортируемости, а не от ассоциавности.. например в сортируемом векторе тоже не будет сохранен порядок элементов относительно их заполнения.



--------------------
PM MAIL WWW   Вверх
jonie
Дата 31.8.2008, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
vinter
Дата 31.8.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(jonie @  31.8.2008,  11:00 Найти цитируемый пост)
в где написано что std::map чета сортирует?

в описании контейнера



--------------------
Мой блог
PM MAIL WWW   Вверх
cutwater
Дата 31.8.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



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


--------------------
user posted image
PM MAIL   Вверх
bsa
Дата 31.8.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Map is a Sorted Associative Container
Тут конечно не написано, что последовательный доступ к элементам будет давать отсортированную последовательность... Но и не сказано так же, что порядок следования будет в порядке добавления.
PM   Вверх
mes
Дата 31.8.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(jonie @  31.8.2008,  10:00 Найти цитируемый пост)
где написано что std::map чета сортирует?


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

 smile 


--------------------
PM MAIL WWW   Вверх
Rutti
Дата 3.9.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



all
Большое спасибо за обсуждение. Но решения я так и не понял
PM MAIL   Вверх
Mayk
Дата 3.9.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



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

Во первых эта фраза относится только к стловским контейнерам, а не к любому ассоциативному..

Если под stl'ом, как это обычно бывает, понимать std либу, то нет, не применима. 
Смотреть std::tr1::unordered_map. Ассоциативнее некуда. И неотсортированнее некуда[привет хеш]


Цитата(Rutti @  30.8.2008,  12:55 Найти цитируемый пост)
Хорошо. И как тогда осуществлять контроль за соответствием заполнения и вывода? 

Используй std::vector<std::pair<std::string, std::string> > или что то аналоигичное и будет тебе счастье. ну можно смотреть ещё в сторону boost::multi_index.

Это сообщение отредактировал(а) Mayk - 3.9.2008, 12:55


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
vinter
Дата 3.9.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Mayk @  3.9.2008,  13:55 Найти цитируемый пост)
Смотреть std::tr1::unordered_map

где кроме патченной 2008 студии есть tr1?

Цитата(Mayk @  3.9.2008,  13:55 Найти цитируемый пост)
то нет, не применима

книга писалась за долго, до появления tr1


--------------------
Мой блог
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.