题
我需要以钥匙值格式存储字符串。因此,您正在使用下面的地图。
#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 ::操作员<(const std :: _ tree <_traits>&,const std :: _ tree <_traits>&)':无法推论'const std :: _ tree <_ treat <_traits>&'的template参数来自'const std :: string'
我尝试了下面的sake_pair函数,但这也报告了相同的错误。
m.insert(make_pair(s1, v1));
请让我知道上述问题的问题和解决方案是什么。解决上述问题之后,我可以像以下那样使用以下基于键检索值
m.find(s1);
解决方案
我想你想念一个 #include <string>
某处。
其他提示
您能尝试一下:
#include<string>
似乎编译器不知道如何比较字符串。也许她对字符串还不够了解,但过于专注于您 map
找出ATM。
尝试 m[s1] = v1;
反而。
您现在有几种可能性的键值格式存储字符串:
m["key1"] = "val1";
m.insert(pair<string,string>("key2", "val2"));
m.insert({"key3", "val3"}); // c++11
并在C ++ 11中穿越它:
for( auto it = m.begin(); it != m.end(); ++it )
{
cout << it->first; // key
string& value = it->second;
cout << ":" << value << endl;
}
这是设置地图<...,...>的方法
static std::map<std::string, RequestTypes> requestTypesMap = {
{ "order", RequestTypes::ORDER },
{ "subscribe", RequestTypes::SUBSCRIBE },
{ "unsubscribe", RequestTypes::UNSUBSCRIBE }
};
我认为这与以下事实有关 <map>
不包括 <string>
, , 但 <xstring>
. 。当您将元素添加到地图中时,需要通过排序在地图中找到正确的位置。分类时,地图试图找到 operator <
, ,从中找到新元素的正确位置。但是,没有 operator <
用于字符串的定义 <xstring>
, ,因此您会收到错误消息。
S1是您希望通过字符串的整数...这可能是错误的主要原因!
不隶属于 StackOverflow