代码之家  ›  专栏  ›  技术社区  ›  bjskishore123

map<string,string>如何在这个map中插入数据?

  •  12
  • bjskishore123  · 技术社区  · 15 年前

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

    #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::\u Tree<\u Traits>,const std::\u Tree<\u Traits>)':无法从'const std::string'推断'const std::\u Tree<\u Traits>'的模板参数

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

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

    请告诉我出了什么问题,有什么解决办法。 在解决了上述问题之后,我可以使用下面的方法来检索基于键的值吗

    m.find(s1);
    
    8 回复  |  直到 12 年前
        1
  •  39
  •   Etienne de Martel    15 年前

    我想你错过了 #include <string> 在某个地方。

        2
  •  9
  •   Daren Thomas    15 年前

    你能试试这个吗:

    #include<string>
    

    似乎编译器不知道如何比较字符串。也许她对弦乐还不够了解,但太专注于你的音乐了 map 去弄清楚。

        3
  •  5
  •   Alexey Tkach    6 年前

    以下是设置地图的方法<…..>

    static std::map<std::string, RequestTypes> requestTypesMap = {
       { "order",       RequestTypes::ORDER       },
       { "subscribe",   RequestTypes::SUBSCRIBE   },
       { "unsubscribe", RequestTypes::UNSUBSCRIBE }
    };
    
        4
  •  3
  •   tdammers    15 年前

    尝试 m[s1] = v1; 相反。

        5
  •  3
  •   TadejP    7 年前

    现在有几种方法可以存储键值格式的字符串:

    m["key1"] = "val1";
    m.insert(pair<string,string>("key2", "val2"));
    m.insert({"key3", "val3"}); // c++11
    

    for( auto it = m.begin(); it != m.end(); ++it )
    {
      cout << it->first; // key
      string& value = it->second;
      cout << ":" << value << endl;
    }
    
        6
  •  1
  •   default    15 年前

    <map> 不包括 <string> <xstring> . 向地图添加元素时,需要通过排序找到地图中的正确位置。排序时,map尝试定位 operator < ,从中找到新元素的正确位置。但是,没有 操作员< 中字符串的定义 <xstring> ,从而得到错误消息。

        7
  •  -2
  •   badrequest    9 年前