0

我一直在寻找一种将 astring[]作为地图值的方法,我发现了这个 Stack Overflow question。我试图使用该std::any类型来解决我的问题,但我得到了错误

binary '<': 'const _Ty' 未定义此运算符或转换为预定义运算符可接受的类型

这是我的代码:

#include <iostream>
#include <map>
#include <any>
using namespace std;
map<any,any> dat;
int main()
{
    any s[] = {"a","b"};
    dat["text"] = s;
    return 0;
}
4

1 回答 1

3

std::map默认情况下要求密钥类型与<. std::any未定义任何内容operator<,因此默认情况下不能用作映射中的键。

如果您真的想在地图中使用它作为键,则需要实现自己的比较器,请参阅this question

但是,比较器需要定义一个弱严格的顺序。为std::any.


map<any,any>对于您要解决的任何问题,这不太可能是正确的方法。

如果要将std::string数组作为键或值类型,请使用std::array<std::string, N>orstd::vector<std::string>代替普通的std::string[N].

std::map可以开箱即用地使用这些类型。

std::any只有很少的用例。如果您没有非常具体的理由使用它,您可能不应该尝试使用它。

于 2022-01-13T03:12:35.827 回答