map <string,string =“”>如何在此地图中插入数据?</string,>

时间:2010-09-14 12:52:54

标签: c++ stl stdstring stdmap

我需要以键值格式存储字符串。所以我正在使用如下的地图。

#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&lt;(const std :: _ Tree&lt; _Traits&gt;&amp;,const std :: _ Tree&lt; _Traits&gt;&amp;)':无法推断'const std ::的模板参数_Tree&LT; _Traits&GT; &安培;”来自'const std :: string'

我也尝试过make_pair函数,如下所示,但这也报告了相同的错误。

m.insert(make_pair(s1, v1));

请让我知道什么是错的,以及解决上述问题的方法是什么。 解决了上述问题后,我可以使用下面的方法来检索基于密钥的值

m.find(s1);

7 个答案:

答案 0 :(得分:34)

我想你错过了某个#include <string>

答案 1 :(得分:6)

你可以试试这个:

#include<string>

似乎编译器不知道如何比较字符串。也许她对字符串知之甚少,但是过于专注于你的map来解决这个问题。

答案 2 :(得分:2)

请尝试m[s1] = v1;

答案 3 :(得分:2)

您现在有几种可能如何以键值格式存储字符串:

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;
}

答案 4 :(得分:1)

我认为这与<map>不包括<string>,而是<xstring>的事实有关。当您向地图添加元素时,需要通过排序在地图中找到正确的位置。排序时,map会尝试找到operator <,从中找到新元素的正确位置。但是,operator <中的字符串定义没有<xstring>,因此您会收到错误消息。

答案 5 :(得分:0)

这是设置地图的方法<...,...>

static std::map<std::string, RequestTypes> requestTypesMap = {
   { "order",       RequestTypes::ORDER       },
   { "subscribe",   RequestTypes::SUBSCRIBE   },
   { "unsubscribe", RequestTypes::UNSUBSCRIBE }
};

答案 6 :(得分:-2)

s1是一个你希望以字符串形式传递的整数...这可能是错误的主要原因!!