словарь типа std::map но с сохранением порядка
От: Аноним  
Дата: 14.01.08 10:19
Оценка:
нужен словарь типа mymap[ key ] = value;
std::map не подходит ибо не сохраняет order.

что посоветуете практического? какой класс взять из какой библиотеки? я работаю на VC6.
по-идее, насколько я понимаю, это должна быть hashmap
взять из boost? или попробовать приделать к VC6 StlPort?
Re: словарь типа std::map но с сохранением порядка
От: quodum  
Дата: 14.01.08 10:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>нужен словарь типа mymap[ key ] = value;

А>std::map не подходит ибо не сохраняет order.

boost::multi_index?

А>по-идее, насколько я понимаю, это должна быть hashmap


hash_map не только не сохраняет порядок, он вообще не определяет никакого порядка.
При желании можно собрать из конструктора: map или hash_map поверх vector или list.
Re: словарь типа std::map но с сохранением порядка
От: Bell Россия  
Дата: 14.01.08 10:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>нужен словарь типа mymap[ key ] = value;

А>std::map не подходит ибо не сохраняет order.
Имеется ввиду порядок вставки элементов в контейнер?

А>что посоветуете практического? какой класс взять из какой библиотеки? я работаю на VC6.

Поищи bimap, boost::multi_index.
А>по-идее, насколько я понимаю, это должна быть hashmap
Почему?

А>взять из boost? или попробовать приделать к VC6 StlPort?

В StlPort, конечно, hashmap есть, но порядок вставки элементов в нем никак не сохраняется.
Любите книгу — источник знаний (с) М.Горький
Re: словарь типа std::map но с сохранением порядка
От: SereG  
Дата: 14.01.08 10:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>нужен словарь типа mymap[ key ] = value;

А>std::map не подходит ибо не сохраняет order.

А разве в map элементы расположены не по порядку?
Re[2]: словарь типа std::map но с сохранением порядка
От: Аноним  
Дата: 14.01.08 11:51
Оценка:
А>>нужен словарь типа mymap[ key ] = value;
А>>std::map не подходит ибо не сохраняет order.
SG>А разве в map элементы расположены не по порядку?


Чуть опосля я пришел к след. решению =)
Чем извращаться, сделаю парой объектов, map + vector, в которых элементы будут синхронизированы.
Для редактирования и сохранения порядка — vector. Для быстрого поиска — map.


Суть происходящего:
Я загружаю все это дело из текстового файла вида

название тэг граф.объекта
----------------------
name_abc value_abc
name_xyz value_xyz
name_qwe value_qwe
name_jkl value_jkl

мне нужно уметь редактировать этот список, вставлять посредине его строки
(его редактирует пользователь).
Но в то же время я должен быстро по строке "name" находить value, ибо всё это у меня работает в графике.
value — это графический объект с tag'ом "value", идентифицируемый строкой "name".
Re: словарь типа std::map но с сохранением порядка
От: Qbit86 Кипр
Дата: 14.01.08 15:07
Оценка:
А>что посоветуете практического? какой класс взять из какой библиотеки?

Loki::AssocVector.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: словарь типа std::map но с сохранением порядка
От: Bell Россия  
Дата: 14.01.08 15:15
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Loki::AssocVector.

Loki::AssocVector — обертка над отсортированным вектором. Чем это может помочь в решении указанной проблемы —
Любите книгу — источник знаний (с) М.Горький
Re[3]: словарь типа std::map но с сохранением порядка
От: Qbit86 Кипр
Дата: 14.01.08 16:07
Оценка:
B>Loki::AssocVector — обертка над отсортированным вектором.

Я в курсе.
Возможно, неправильно понял, что именно требуется вопрошающему Анониму.
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: словарь типа std::map но с сохранением порядка
От: zaufi Земля  
Дата: 14.01.08 22:41
Оценка:
ну тогда однозначно boost::multi_index с sequence контейнером и индексом по имени...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.