标签: boost-bimap

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

我有这样一个bimap:

using MyBimap = boost::bimaps::bimap<
    boost::bimaps::unordered_set_of<A>,
    boost::bimaps::unordered_set_of<B>>;
Run Code Online (Sandbox Code Playgroud)

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

MyBimap map{{a1, b1}, {a2, b2}, {a3, b3}};
Run Code Online (Sandbox Code Playgroud)

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

 bimap();

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

 bimap(const bimap &);
Run Code Online (Sandbox Code Playgroud)

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

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

它也没用.文档并不完全清楚这个构造函数期望什么样的迭代器,但显然它不仅仅是std::pair<A, B>对象的迭代器.那么这个构造函数对这种bimap的期望是什么?

c++ boost c++11 boost-bimap

21
推荐指数
3
解决办法
4853
查看次数

使用 BOOST::associative property map 插入 boost::BIMAP ... 失败

参考我之前提出的有关 boost::bimaps 和 boost 关联属性映射接口的问题我想为我的 bimap 使用 Put 和 Get 辅助函数。

\n\n

参考此处给出的示例代码,我尝试添加以下内容,但由于断言失败而出现很长的编译错误...这是代码:

\n\n
#include <boost/bimap.hpp> \n#include <boost/property_map/property_map.hpp> \n#include <boost/bimap/property_map/set_support.hpp>\n#include <iostream> \n\nusing namespace boost; \n\nint main() \n{\n  typedef int vertex_descriptor_t;\n  typedef boost::bimaps::bimap< vertex_descriptor_t, size_t > vd_idx_bimap_t;\n  typedef boost::associative_property_map<vd_idx_bimap_t::left_map>   asso_vd_idx_bimap_t;\n\n  // define bimap\n  vd_idx_bimap_t        my_bimap;\n  asso_vd_idx_bimap_t   my_asso_bimap(my_bimap.left);\n\n  typedef typename vd_idx_bimap_t::value_type value_type;    \n  my_bimap.insert( value_type( 1, 100 ) );\n  // print bimap\n  for(auto t = my_bimap.left.begin(); t != my_bimap.left.end(); ++t)\n      std::cout << t->first << " " << t->second …
Run Code Online (Sandbox Code Playgroud)

c++ boost dictionary boost-bimap

5
推荐指数
1
解决办法
818
查看次数

在定义成员类后重新声明成员类是否合法?

我在编译boost.bimap库时遇到问题.我的测试程序是一个空白的主函数,只有一个include指令(如#include <boost/bimap.hpp>).经过一些调查后,我发现预处理器已经从头文件中做了一些有趣的构造,如:

struct A { struct B{}; struct B; };
Run Code Online (Sandbox Code Playgroud)

我不知道这是否正确,但gcc接受它,而clang和icc则不接受.谁是对的,我该怎么做才能用bimap库编译程序?不幸的是,我不能在这种情况下使用gcc.

c++ bimap c-preprocessor boost-bimap

0
推荐指数
1
解决办法
228
查看次数

标签 统计

boost-bimap ×3

c++ ×3

boost ×2

bimap ×1

c++11 ×1

c-preprocessor ×1

dictionary ×1