【发布时间】:2020-02-09 13:32:30
【问题描述】:
我有许多字符串及其等效的位集。我需要能够在两个方向上查找等价物,即“str to bitset”和“bitset to str”。我相信 boost-bimap 将是这项工作的正确容器。
我设法让它与字符串和整数一起使用,但我的字符串/位集 bimap 无法编译。我正在使用 VS2019 和最新的 boost 版本。
整数示例有效:
#include <boost/bimap.hpp>
#include <string>
#include <iostream>
int main()
{
typedef boost::bimap<std::string, int> bimap_str_int_t;
bimap_str_int_t bimap1;
bimap1.insert(bimap_str_int_t::value_type("A", 1));
std::cout << bimap1.left.at("A") << '\n'; //prints 1
std::cout << bimap1.right.at(1) << '\n'; // prints A
}
Bitset 示例编译失败:
#include <boost/bimap.hpp>
#include <string>
#include <iostream>
#include <bitset>
int main()
{
typedef std::bitset<3> bitset_t;
typedef boost::bimap<std::string, bitset_t> bimap_str_bitset_t;
bimap_str_bitset_t bimap2;
bitset_t bits{ "010" };
bimap2.insert(bimap_str_bitset_t::value_type("A", bits));
std::cout << bimap2.left.at("A") << '\n';
std::cout << bimap2.right.at(bits) << '\n';
}
bitset 示例产生以下编译器错误:
boost_test.cpp(20): message : 请参阅正在编译的类模板实例化 'boost::bimaps::bimap' 的参考
我不知道如何解决这个问题,如果有任何提示,我将不胜感激。
【问题讨论】:
标签: c++ boost std-bitset boost-bimap