2016-04-30 18 views
-2

私は次のコンテナがあります。挿入データ::マップ

map<int,string,string> data; 

を私は(一度に1つずつ)以下のコードを使用して、そのマップに情報を保存しようとしているが、それらのどれも機能しません。

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に格納するか考えていますか?

は、あなたがそのキーを1 intであり、データは2つのstring sのマップ(std::map)を作成する

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

を書くことができますあなたの

+0

なぜdownvote? – zeeks

+0

'map data;'は事ではありません。 'std :: string'は比較関数型として使用できません。 [参考資料](http://en.cppreference.com/w/cpp/container/map)をご覧ください。 –

+0

'std :: map 'が無効です。あなたは1つのキータイプと1つの値タイプしか指定できません。 – songyuanyao

答えて

1

ありがとうございます。

データを挿入するには、あなたが

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