V>>Как бы сделать?
Z>почитай про boost multi index container -- возможно он пможет
Это тот что типа мапы но с несколькими ключами? Это не совсем то, что мне нужно. Хочется иметь последовательный доступ по мапе и в то же время быстрый поиск по ключу.
Допустим определил, как добавлять собираешся?
V>Это тот что типа мапы но с несколькими ключами? Это не совсем то, что мне нужно. Хочется иметь последовательный доступ по мапе и в то же время быстрый поиск по ключу.
Можно уточнение?
Чем не достаточно вот такое определение?
то есть главным является map. Удаление также. Сначала смотрим в map, берем из него итератор на list удаляем из листа и потом из map.
V>>Это тот что типа мапы но с несколькими ключами? Это не совсем то, что мне нужно. Хочется иметь последовательный доступ по мапе и в то же время быстрый поиск по ключу.
C>Можно уточнение? C>Чем не достаточно вот такое определение? C>
на самом деле my_val не определяющий (вообще можно его не рассматривать, а в исходном варианте заменить в листе пару на просто итератор из мапы). мне хочется также иметь my_key как массив, чтобы полный список всех ключей. итерировать по мапе не хочется по понятным причинам.
Здравствуйте, vvv104, Вы писали:
Z>>почитай про boost multi index container -- возможно он пможет V>Это тот что типа мапы но с несколькими ключами? Это не совсем то, что мне нужно. Хочется иметь последовательный доступ по мапе и в то же время быстрый поиск по ключу.
Кстати говоря, что подразумевается под "последовательный доступ по мапе"?
Пробежаться по элементам в том порядке, как они были добавлены, или в каком угодно, лишь бы последовательно? Так в последнем случае можно вообще одной мапой обойтись.
Про мульти-индекс уже говорили. Но если охота поупражняться самому, то прямо так вот "в лоб" не получится — нужно определить какую-то хотя бы одну собственную сущность. Например, можно заменить std::pair собственным классом, тогда все срастается:
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, vvv104, Вы писали:
Z>>>почитай про boost multi index container -- возможно он пможет V>>Это тот что типа мапы но с несколькими ключами? Это не совсем то, что мне нужно. Хочется иметь последовательный доступ по мапе и в то же время быстрый поиск по ключу.
К>Представьте себе, мульти-индекс и это прекрасно умеет
К>Кстати говоря, что подразумевается под "последовательный доступ по мапе"? К>Пробежаться по элементам в том порядке, как они были добавлены, или в каком угодно, лишь бы последовательно? Так в последнем случае можно вообще одной мапой обойтись.
Здравствуйте, vvv104, Вы писали:
V>Собственно инкремент итератора в мапе довольно дорогостоящая штука (если я все правильно понимаю).
Нет. Полный забег по мапу занимает O(n), т.е. в среднем O(1) на инкремент.
Хотя отдельные инкременты могут занимать и O(log n), но, во-первых, что такое log n? В самом трагичном случае это 31.