Конечно.
Однако первый взгляд на Boost, Bimap, как это кажется уже делать то, что вы описали:
I приведен пример использования Boost Multi Index для эмуляции карты здесь:
Соответствующий тип машины выглядит следующим образом:
namespace emulation {
template <typename T1,typename T2,typename Alloc>
struct mutable_pair
{
typedef T1 first_type;
typedef T2 second_type;
mutable_pair(Alloc alloc):first(T1(alloc)),second(T2(alloc)){}
mutable_pair(const T1& f,const T2& s):first(f),second(s){}
mutable_pair(const std::pair<T1,T2>& p):first(p.first),second(p.second){}
T1 first;
mutable T2 second;
};
using namespace boost::multi_index;
template <typename Key, typename T, typename Compare, typename Allocator, typename Element = mutable_pair<Key, T, Allocator> >
using map = multi_index_container<
Element,
indexed_by<
ordered_unique<member<Element,Key,&Element::first>,Compare>
>,
typename Allocator::template rebind<Element>::other
>;
template <typename Key, typename T, typename Compare, typename Allocator, typename Element = mutable_pair<Key, T, Allocator> >
using multimap = multi_index_container<
Element,
indexed_by<
ordered_non_unique<member<Element,Key,&Element::first>,Compare>
>,
typename Allocator::template rebind<Element>::other
>;
}
В случае, если вы хотите, чтобы ответ содержит полный демо, хотя он содержит несвязанный сложности с тем, чтобы использовать общую память распределители.
Благодарим вас за описательный и полезный ответ. Однако я застрял в эмуляции картографического ассоциативного контейнера. Я попытался эмулировать карту, которая содержит ключ и значение как «set <>» boost: shared_ptr <>. – BSalunke
@Balunke, возможно, вы должны опубликовать еще один вопрос, показывающий SSCCE, где вы застряли – sehe