gpt4 book ai didi

c++ - 我们可以使用 boost::multi_index::multi_index_container 作为多索引映射吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:57 25 4
gpt4 key购买 nike

我正在使用 boost 库的 boost::multi_index::multi_index_container<>。

我想存储与此容器中存在的每个元素相关的值。

我们能否修改此容器以使用多重映射以及它将用作多索引容器?

最佳答案

当然。

但是,首先看一下 Boost Bimap,因为它似乎已经完成了您描述的操作:

我在此处给出了如何使用 Boost Multi Index 模拟 map 的示例:

相关类型的机械如下所示:

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
>;
}

如果您希望答案包含完整的演示,尽管它包含一些无关的复杂性以便使用共享内存分配器。

关于c++ - 我们可以使用 boost::multi_index::multi_index_container 作为多索引映射吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com