[英]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.