簡體   English   中英

地圖 <string, string> 如何在此地圖中插入數據?

[英]map<string, string> how to insert data in this 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>&'的模板參數來自'const std :: string'

我也嘗試過make_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;
}

這是設置map <...,...>的方法

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

我認為這與<map>不包含<string><xstring>這一事實有關。 當您向地圖添加元素時,需要通過排序在地圖中找到正確的位置。 排序時,map嘗試定位operator < ,從中找到新元素的正確位置。 但是,沒有operator <用於<xstring>中字符串的定義,因此您會收到錯誤消息。

s1是一個整數,你希望傳遞為字符串...這可能是錯誤的主要原因!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM