我需要以键值格式存储字符串 . 所以我正在使用如下的 Map .
#include<map>
using namespace std;
int main()
{
map<string, string> m;
string s1 = "1";
string v1 = "A";
m.insert(pair<string, string>(s1, v1)); //Error
}
我在插入行时遇到错误
错误C2784:'bool std :: operator <(const std :: _ Tree <_Traits>&,const std :: _ Tree <_Traits>&)':无法推断'const std :: _ Tree <_Traits>&的模板参数'from'const std :: string'
我也尝试过make_pair函数,但是这也报告了同样的错误 .
m.insert(make_pair(s1, v1));
请告诉我什么是错的,以及解决上述问题的方法是什么 . 解决了上述问题后,我可以使用下面的方法来检索基于密钥的值
m.find(s1);
8 回答
您现在可以使用键值格式存储字符串的几种可能性:
并在c 11中遍历它:
这是设置map <...,...>的方法
你可以尝试std ::之前它可能会工作
s1是一个整数,你希望传递为字符串...这可能是错误的主要原因!!
我想你错过了某个地方
#include <string>
.你能试一试吗:
似乎编译器还没有充分了解字符串,但过于专注于你的
map
来解决这个问题 .请尝试使用
m[s1] = v1;
.我认为这与
<map>
不包括<string>
,但<xstring>
这一事实有关 . 当您向 Map 添加元素时,需要通过排序在 Map 中找到正确的位置 . 在排序时,map尝试定位operator <
,从中找到新元素的正确位置 . 但是,<xstring>
中的字符串定义没有operator <
,因此您会收到错误消息 .