如何在bimap中将两个或多个元素作为键

时间:2017-01-19 10:15:33

标签: c++ boost-bimap

我想知道是否可以在bimap中插入两个或更多元素作为关键字。我有一个bimap的最小示例,其中包含一个元素键

#include <boost/bimap.hpp>
#include <boost/bimap/multiset_of.hpp>
#include <string>
#include <iostream>

int main()
{
  typedef boost::bimap<boost::bimaps::set_of<int>,boost::bimaps::multiset_of<int> > bimap;
  bimap numbers;

  numbers.insert({1, 1});
  numbers.insert({2, 1});
  numbers.insert({3, 8});
  auto it = numbers.left.find(1);


  std::cout << it->first << ":" << it->second << std::endl;
}

现在我可以拥有像

这样的东西
typedef boost::bimap<boost::bimaps::set_of<int>,boost::bimaps::multiset_of<int, int > > bimap;
bimap numbers;
numbers.insert({1, 1, 5});
numbers.insert({2, 1, 1});

1 个答案:

答案 0 :(得分:1)

一对整数的类型std::pair <int, int>(在C ++ 11及更高版本中也是std::tuple <int, int>

typedef boost::bimap<boost::bimaps::set_of<int>,boost::bimaps::multiset_of<std::pair<int, int > > > bimap;
bimap numbers;
numbers.insert({1, {1, 5}});
numbers.insert({2, {1, 1}});

注意插入

中的额外{}