std :: map <std :: any,std :: any>麻烦

时间:2019-09-23 08:45:50

标签: c++ visual-studio stdmap

我正在尝试使用std:map类型的键和值制作一个std::any

Visual Studio 2017

std::map<std::any, std::any> m("lastname", "Ivanov");
std::cout << std::any_cast<std::string>(m["lastname"]) << std::endl;

给我一​​个

  

错误:二进制'<':未找到采用'const_Ty'类型的左操作数的运算符

1 个答案:

答案 0 :(得分:0)

std::any没有二进制“ <”运算符(小于)。如何为std::map元素建立索引的默认方法。

解决方案可能包括:

  1. 使用另一个键(具有运算符“ <”)
  2. 使用自定义比较器,例如:

    #include <map>
    #include <any>
    
    int main() {
        auto elements = std::initializer_list<std::pair<const std::any, std::any>>{};
        auto mymap = std::map(elements, [](const std::any& lhs, const std::any& rhs){return false;});
    }
    

然后实现比较功能,而不是返回false

try it yourself

相关问题