powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двунаправленный ассоциативный контейнер - нужен STL - аналог или вариант реализации.
3 сообщений из 3, страница 1 из 1
Двунаправленный ассоциативный контейнер - нужен STL - аналог или вариант реализации.
    #33995223
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен класс, хранящий ассоциации между элементами (вроде multimap, но "двусторонний" и с поддержкой уникальности):
допустим, есть набор элементов A и элементов B (DWORD, int, без разницы).

ОДному элементу/значению A "соответствуют" один или несколько элементов/значений B.
И одному элементу/значению B соответствует один или несколько элементов/значений A.
Можно, зная значения A получить все соответствующие ему значения B, и зная значение B получить ВСЕ соответствующие ему значения A.

ОДнако! Каждая пара A-B уникальна и хранится в массиве один раз.
Массив оптимизирован на быстрый поиск значений.

Какой STL класс содержит эту функциональность? (по справке понял, что наиболее близок stdext::hash_multimap, но при добавлении пары не проверяет дублирование, хотя в документации сказано, что проверяет :)).

Или как это можно воплотить?
ПРедполагаемые "входные"/"рабочие" данные.
число значений A порядка 1000..8000.
число значений B порядка 1000..8000.
число значений A != числу значений B
количество пар равно max(число значений A, число значений B).
...
Рейтинг: 0 / 0
Двунаправленный ассоциативный контейнер - нужен STL - аналог или вариант реализации.
    #33996545
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самому придется писать. В STL такого нет.. А hash_multimap это multimap но только не на красно-черно дереве, а на hash таблице
Ну что-нибудь такое

template<class T>
struct ptr_first_less : public binary_function<T*, T*, bool>
{
result_type operator(const first_argument_type& x, const second_argument_type& y) const { return x->first < y->first; }
};

template<class T>
struct ptr_second_less : public binary_function<T*, T*, bool>
{
result_type operator(const first_argument_type& x, const second_argument_type& y) const { return x->second < y->second; }
};

template <typename A,typename B>
MyContainer
{

typedef pair<A, B> value_type;
typedef value_type* value_type_ptr;
set<value_type> buffer;
multiset<value_type_ptr, ptr_first_less<value_type_ptr> > first_keys;
multiset<value_type_ptr, ptr_second_less<value_type_ptr> > second_keys;

...
};
...
Рейтинг: 0 / 0
Двунаправленный ассоциативный контейнер - нужен STL - аналог или вариант реализации.
    #33997671
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedСамому придется писать. В STL такого нет.. А hash_multimap это multimap но только не на красно-черно дереве, а на hash таблице

Ок. я понял :( Пока сделал тестовый класс на двойному multimap'е... :) просто нет времени загнаться по хорошему.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двунаправленный ассоциативный контейнер - нужен STL - аналог или вариант реализации.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]