gpt4 book ai didi

boost - Boost::variant与无序映射

转载 作者:行者123 更新时间:2023-12-01 11:42:43 32 4
gpt4 key购买 nike

有人可以告诉我,我如何获得boost::Variant处理无序地图?
typedef boost::variant<long, string, double> lut_value;unordered_map<lut_value, short> table;
我认为有一个用于boost::variant的哈希函数,对吗?

编译器说:

./src/lookup/HashMap.o:在函数`std::__ detail::_ Hash_code_base中,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变种::: void_,boost::detail::variant::void_>,std::pair,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_ , boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变种::: void_,boost::detail::variant::void_> const,short>,std::_ Select1st,std::allocator>,double,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_> const,short>>,std::equal_to,std::allocator>,double,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>>,std::hash,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>>,std::__ detail::_ Mod_range_hashing,std::____ detail::_ Default_ranged_hash,f alse>::_ M_hash_code(boost::variant,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :variant::void_> const&)const':
/usr/include/c++/4.6/bits/hashtable_policy.h:753:对`std::hash,std::allocator>的未定义引用,双精度,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_>>::operator()(boost::variant,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::voi d_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>)const'
./src/lookup/HashMap.o:在函数`std::__ detail::_ Hash_code_base中,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变种::: void_,boost::detail::variant::void_>,std::pair,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_ , boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变种::: void_,boost::detail::variant::void_> const,short>,std::_ Select1st,std::allocator>,double,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_> const,short>>,std::equal_to,std::allocator>,double,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>>,std::hash,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_ ,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>>,std::__ detail::_ Mod_range_hashing,std::____ detail::_ Default_ranged_hash,f其他>::_ M_bucket_index(std::__ detail::_ Hash_node,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost: :detail::variant::void_> const,short>,false> const *,unsigned long)const':
/usr/include/c++/4.6/bits/hashtable_policy.h:763:对`std::hash,std::allocator>的未定义引用,双精度,boost::detail::variant::void_,boost::detail: :variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::变量:: void_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强::详细信息::变量::无效_,增强:: detail::variant::void_,boost::detail::variant::void_>>::operator()(boost::variant,std::allocator>,double,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::voi d_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>)const'

最佳答案

是的,它需要一个哈希函数。你可以做:

#include <boost/functional/hash.hpp>
#include <boost/variant.hpp>

typedef boost::variant<long, std::string, double> lut_value;
std::unordered_map<lut_value, short, boost::hash<lut_value>> table;

关于boost - Boost::variant与无序映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999591/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com