我有许多字符串及其等效的位集。我需要能够在两个方向上查找等价物,即“ str to bitset ”和“ bitset to str ”。我相信 boost-bimap 将是这项工作的正确容器。
我设法让它与字符串和整数一起使用,但我的字符串/位集 bimap 无法编译。我正在使用带有最新增强版本的 VS2019。
整数示例有效:
#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' 的引用
我不知道如何解决这个问题,非常感谢任何提示。