2016-04-30 30 views
-2

我有以下容器:插入數據::地圖

map<int,string,string> data; 

我一直在嘗試存儲使用以下代碼(一次一個),地圖資料,但他們沒有工作。

data.insert(m, f, l); 
data.insert(map<int,string,string>(m, f, l)); 
data.insert(pair<int,string,string>(m, f, l)); 

任何人有任何想法如何將數據存儲在std :: map?

謝謝

+0

爲什麼downvote? – zeeks

+0

'map data;'不是件事。 'std :: string'不能用作比較函子類型。請閱讀[參考文檔](http://en.cppreference.com/w/cpp/container/map)。 –

+0

'std :: map '無效,您只能指定一個鍵類型和一個值類型。 – songyuanyao

回答

1

你可以寫

map<int, std::pair<string, string> > data; 

創建地圖(std::map),其關鍵是一個int和數據是二string秒。

要插入數據,你可以寫

data.insert(std::make_pair<int, std::pair<string, string> >(m, std::make_pair<string, string>(f, l)); 

或者更簡單地說

data[m] = std::make_pair<string, string>(f, l); 

完整的示例:

#include <iostream> 
#include <map> 
#include <string> 
#include <utility> 

using std::map; 
using std::string; 

int main(void) { 
    map<int, std::pair<string, string> > data; 
    int m; 
    string f, l; 

    // insert data 
    m = 20; f = "hoge"; l = "fuga"; 
    data.insert(std::pair<int, std::pair<string, string> >(m, std::pair<string, string>(f, l))); 
    m = 10; f = "foo"; l = "bar"; 
    data[m] = std::pair<string, string>(f, l); 

    // display data 
    for (map<int, std::pair<string, string> >::iterator it = data.begin(); it != data.end(); it++) { 
     std::cout << it->first << " -> " << it->second.first << ", " << it->second.second << '\n'; 
    } 

    return 0; 
}