gpt4 book ai didi

c++ - 如何从静态列表构造Boost bimap?

转载 作者:IT老高 更新时间:2023-10-28 21:49:35 46 4
gpt4 key购买 nike

我有一个这样的双图:

using MyBimap = boost::bimaps::bimap<
boost::bimaps::unordered_set_of<A>,
boost::bimaps::unordered_set_of<B>>;

我想从静态初始化列表构造它,因为它可以为 std::map 完成。 :

MyBimap map{{a1, b1}, {a2, b2}, {a3, b3}};

很遗憾,它不起作用,因为 bimap不支持初始化列表,所以我尝试了一种解决方法。 Boost 的文档列出了以下构造函数:

 bimap();

template< class InputIterator >
bimap(InputIterator first,InputIterator last);

bimap(const bimap &);

所以我尝试了第二个,像这样:

std::vector<std::pair<A,B>> v{{a1, b1}, {a2, b2}, {a3, b3}};
MyBimap map(v.begin(), v.end());

它也没有工作。文档并不清楚这个构造函数需要什么样的迭代器,但显然它不仅仅是 std::pair<A, B> 的迭代器。对象。那么这个构造函数对这种 bimap 有什么期望呢?

最佳答案

我使用下面的“工厂函数”,它接受一个大括号初始化列表并返回一个 boost::bimap:

template <typename L, typename R>
boost::bimap<L, R>
makeBimap(std::initializer_list<typename boost::bimap<L, R>::value_type> list)
{
return boost::bimap<L, R>(list.begin(), list.end());
}

用法:

auto myBimap = makeBimap<int, int>({{1, 2}, {3, 4}, {5, 6}});

关于c++ - 如何从静态列表构造Boost bimap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288871/

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