Boost :: Bimap等效于双向多图 [英] Boost::Bimap equivalent of bidirectional multimap
本文介绍了Boost :: Bimap等效于双向多图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题的第一部分是我正在尝试使用boost :: bimap,但是从文档中我还不清楚如何定义双向多图.
First part of the question is that I am trying to use boost::bimap, but from the documentation it is unclear to me how to define a bidirectional multimap.
问题的第二部分是我需要它是一个方向的地图,而另一个方向的多重地图,可以使用boost :: bimap吗?
The second part of the question is that I need it to be a map in one direction and a multimap in the other direction, can this be done using boost::bimap ?
任何人都有这方面的经验或可以将我指向正确的页面吗?
Has anyone experience of this or can point me to the correct page ?
推荐答案
All is in documentation... http://www.boost.org/doc/libs/1_51_0/libs/bimap/doc/html/boost_bimap/the_tutorial/discovering_the_bimap_framework.html
typedef boost::bimap<bimaps::multiset_of<int>, bimaps::set_of<int>> bimap_t;
示例.
#include <iostream>
#include <boost/bimap.hpp>
#include <boost/bimap/set_of.hpp>
#include <boost/bimap/multiset_of.hpp>
namespace bimaps = boost::bimaps;
int main()
{
typedef boost::bimap<bimaps::multiset_of<int>, bimaps::set_of<int>> bimap_t;
typedef bimap_t::value_type value_type;
bimap_t bimap;
bimap.insert(value_type(1, 1));
bimap.insert(value_type(1, 2));
auto& left = bimap.left;
auto it = left.find(1);
std::cout << "LEFT" << std::endl;
for (; it != left.end(); ++it)
{
std::cout << it->first << " " << it->second << std::endl;
}
auto& right = bimap.right;
auto r_it = right.find(2);
std::cout << "RIGHT" << std::endl;
for (; r_it != right.end(); ++r_it)
{
std::cout << r_it->first << " " << r_it->second << std::endl;
}
}
这篇关于Boost :: Bimap等效于双向多图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文