STL последовательный map
От: Praetor  
Дата: 26.09.06 16:21
Оценка:
Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: STL последовательный map
От: Smal Россия  
Дата: 26.09.06 16:29
Оценка:
Здравствуйте, Praetor, Вы писали:

P>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


В смысле, что бы искалось по key, а [begin, end) были в порядке добавления?
Тогда без доп. вектора (или другого контейнера) нельзя.
С уважением, Александр
Re[2]: STL последовательный map
От: Praetor  
Дата: 26.09.06 16:38
Оценка: -1
Здравствуйте, Smal, Вы писали:

S>Здравствуйте, Praetor, Вы писали:


P>>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


S>В смысле, что бы искалось по key, а [begin, end) были в порядке добавления?

S>Тогда без доп. вектора (или другого контейнера) нельзя.

Что ж, печально. В Java есть HashSet — там и значения упорядочены в порядке добавления, и доступ по ключу. Уже в который раз убеждаюсь, что по сравнению с Java, библиотеки С++ позволяют не такие функциональные и удобные.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: STL последовательный map
От: Smal Россия  
Дата: 26.09.06 16:41
Оценка:
Здравствуйте, Praetor, Вы писали:

S>>В смысле, что бы искалось по key, а [begin, end) были в порядке добавления?

S>>Тогда без доп. вектора (или другого контейнера) нельзя.

P>Что ж, печально. В Java есть HashSet — там и значения упорядочены в порядке добавления, и доступ по ключу. Уже в который раз убеждаюсь, что по сравнению с Java, библиотеки С++ позволяют не такие функциональные и удобные.


В стандарте С++ нет hash_set, но большинство реализаций STL реализует ее в виде расширения.
С уважением, Александр
Re[4]: STL последовательный map
От: Praetor  
Дата: 26.09.06 16:48
Оценка:
Здравствуйте, Smal, Вы писали:

S>В стандарте С++ нет hash_set, но большинство реализаций STL реализует ее в виде расширения.


В MS-ском тоже имеется hash_set. Надеюсь, разрабы разных портов стл смотрят друг на друга, чтобы обеспечить одинаковые интерфейсы. Не хотелось бы иметь не переносимы код (пусть и на уровне библиотеки)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: STL последовательный map
От: Smal Россия  
Дата: 26.09.06 16:49
Оценка:
Здравствуйте, Smal, Вы писали:

S>В стандарте С++ нет hash_set, но большинство реализаций STL реализует ее в виде расширения.

Правда я не уверен, что итераторы данного hash_set итерируют в порядке добаления %(.
С уважением, Александр
Re[5]: STL последовательный map
От: Smal Россия  
Дата: 26.09.06 16:52
Оценка:
Здравствуйте, Praetor, Вы писали:

P>В MS-ском тоже имеется hash_set. Надеюсь, разрабы разных портов стл смотрят друг на друга, чтобы обеспечить одинаковые интерфейсы. Не хотелось бы иметь не переносимы код (пусть и на уровне библиотеки)


Я проверил hash_set из MS VS 7.1. Элеменды итерируются не в порядке добавления.
+ к тому он объявлен deprecated.
Так, что придется либо писать велосипед, либо искать библиотеку. %(
Можно посмотреть здесь
С уважением, Александр
Re[6]: STL последовательный map
От: Praetor  
Дата: 26.09.06 17:09
Оценка:
Здравствуйте, Smal, Вы писали:

S>Здравствуйте, Praetor, Вы писали:


P>>В MS-ском тоже имеется hash_set. Надеюсь, разрабы разных портов стл смотрят друг на друга, чтобы обеспечить одинаковые интерфейсы. Не хотелось бы иметь не переносимы код (пусть и на уровне библиотеки)


S>Я проверил hash_set из MS VS 7.1. Элеменды итерируются не в порядке добавления.

S>+ к тому он объявлен deprecated.
S>Так, что придется либо писать велосипед, либо искать библиотеку. %(
S>Можно посмотреть здесь

Велосипед писать не буду, просто тупо прикручу костыль к имеющемуся мапу — отнаследуюсь, заведу вектор и буду туды складывать ссылки на добавляемые объекты. Впрочем, за ссылку спасибо, может что и найдется.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: STL последовательный map
От: Left2 Украина  
Дата: 26.09.06 17:12
Оценка: 1 (1)
P>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.

boost::multy_index должен помочь, насколько я понимаю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: STL последовательный map
От: Smal Россия  
Дата: 26.09.06 17:15
Оценка: +1
Здравствуйте, Praetor, Вы писали:

P>Велосипед писать не буду, просто тупо прикручу костыль к имеющемуся мапу — отнаследуюсь, заведу вектор и буду туды складывать ссылки на добавляемые объекты. Впрочем, за ссылку спасибо, может что и найдется.

ИМХО, наследоваться не лучший метод. Лучше агрегировать.
С уважением, Александр
Re[2]: STL последовательный map
От: Praetor  
Дата: 26.09.06 17:25
Оценка:
Здравствуйте, Left2, Вы писали:

P>>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


L>boost::multy_index должен помочь, насколько я понимаю.


ОК, будем смотреть в его сторону.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: STL последовательный map
От: Praetor  
Дата: 26.09.06 17:28
Оценка:
Здравствуйте, Smal, Вы писали:

S>Здравствуйте, Praetor, Вы писали:


P>>Велосипед писать не буду, просто тупо прикручу костыль к имеющемуся мапу — отнаследуюсь, заведу вектор и буду туды складывать ссылки на добавляемые объекты. Впрочем, за ссылку спасибо, может что и найдется.

S>ИМХО, наследоваться не лучший метод. Лучше агрегировать.

Факт. Не придется лазить во внутренностях этого мапа, в котором без бутылки не разберешься .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: STL последовательный map
От: Smal Россия  
Дата: 26.09.06 18:35
Оценка: +1
Здравствуйте, Praetor, Вы писали:

P>Здравствуйте, Smal, Вы писали:


S>>Здравствуйте, Praetor, Вы писали:


P>>>Велосипед писать не буду, просто тупо прикручу костыль к имеющемуся мапу — отнаследуюсь, заведу вектор и буду туды складывать ссылки на добавляемые объекты. Впрочем, за ссылку спасибо, может что и найдется.

S>>ИМХО, наследоваться не лучший метод. Лучше агрегировать.

P>Факт. Не придется лазить во внутренностях этого мапа, в котором без бутылки не разберешься .


Дык лазить-то как раз не надо. Просто агрегируй его и пересылай нужные тебе запросы.
Параллельно по insert добавляй в вектор.
А то, оператор [] ты хрен отловишь %). Придется свою проксю писать. Или во внутренности лезть %).
С уважением, Александр
Re: STL последовательный map
От: GlebA  
Дата: 26.09.06 18:58
Оценка:
Здравствуйте, Praetor, Вы писали:

P>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


А я чё-то не пойму... map — это дерево, т.е. в нём все элементы хранятся отсортированными (если проходить итератором). Т.е. они там принципиально не могут быть в порядке добавления...
Gleb
Re[3]: STL последовательный map
От: kan Великобритания  
Дата: 27.09.06 08:06
Оценка: 2 (2) +1
Praetor wrote:

> S>В смысле, что бы искалось по key, а [begin, end) были в порядке

> добавления?
> S>Тогда без доп. вектора (или другого контейнера) нельзя.

> Что ж, печально. В Java есть HashSet — там и значения упорядочены в

> порядке добавления, и доступ по ключу. Уже в который раз убеждаюсь, что
Бред. Читаем jdk1.5.0_07/docs/api/java/util/HashSet.html#iterator()

Returns an iterator over the elements in this set. The elements are returned in no particular order.

Кстати, HashSet это не map. Но посмотрим и HashMap... хм... а он сам по себе не перебирается, есть только entrySet(),
смотрим jdk1.5.0_07/docs/api/java/util/Set.html#iterator(), там

Returns an iterator over the elements in this set. The elements are returned in no particular order (unless
this set is an instance of some class that provides a guarantee).

замечание в скобках, как я понимаю, только для TreeSet, что соотвествует std::set. Так что в этом вопросе библиотеки
предоставляют одну и ту же функциональность.

> по сравнению с Java, библиотеки С++ позволяют не такие функциональные и

> удобные.
Ну так и пишите на Java, а C++ не для вас.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: STL последовательный map
От: Аноним  
Дата: 27.09.06 11:07
Оценка:
Здравствуйте, Praetor, Вы писали:

P>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


Какова логика проекта? Если первичным является порядок времени занесения, то он должен быть в ключе. Если же есть другой ключ по которому надо вести поиск, причем здесь время занесения. Можно конечно поробовать использовать pair в качестве ключа, в которой будет время и ключ, и перегрузить оператор < для нее. Но зачем? Мапы обычно используются для пыстрого поиска, а так смысл ка-то теряется...
Re: STL последовательный map
От: Roman Odaisky Украина  
Дата: 27.09.06 14:56
Оценка:
Здравствуйте, Praetor, Вы писали:

P>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


std::deque<std::pair<Key const, Value> >?

Интерфейс на 90% как у std::map. Даже итераторы совместимые
До последнего не верил в пирамиду Лебедева.
Re[2]: STL последовательный map
От: Left2 Украина  
Дата: 27.09.06 16:08
Оценка:
P>>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.

RO>std::deque<std::pair<Key const, Value> >?


RO>Интерфейс на 90% как у std::map. Даже итераторы совместимые


А искать как? Последовательным перебором?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: STL последовательный map
От: Аноним  
Дата: 27.09.06 16:22
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Praetor, Вы писали:


P>>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


RO>std::deque<std::pair<Key const, Value> >?


RO>Интерфейс на 90% как у std::map. Даже итераторы совместимые


Ну да совместимые, такое скажешь У deque — RandomAccessIterator, у map — BidirectionalIterator
Re[3]: STL последовательный map
От: Аноним  
Дата: 27.09.06 16:24
Оценка:
Здравствуйте, Left2, Вы писали:

P>>>Нужно обеспечить хранение данных в ассоциативном контейнере STL (map) в порядке добавления. Не хочется ради этого заводить дполнительный вектор.


RO>>std::deque<std::pair<Key const, Value> >?


RO>>Интерфейс на 90% как у std::map. Даже итераторы совместимые


L>А искать как? Последовательным перебором?


По индексу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.