2016-04-30 10 views
-2

Ich habe die folgenden Container:Einsatzdaten in einem std :: map

map<int,string,string> data; 

ich versucht habe, Informationen in dieser Karte zu speichern, die folgenden Codes (einen nach dem anderen) verwendet, aber keiner von ihnen arbeitet.

Jeder hat eine Idee, wie man Daten in einer std :: map speichert?

Danke

+0

Warum die downvote? – zeeks

+0

'map Daten;' ist keine Sache. 'std :: string' kann nicht als Vergleichsfunktortyp verwendet werden. Lesen Sie die [Referenzdokumentation] (http://en.cppreference.com/w/cpp/container/map) bitte. –

+0

'std :: map ' ist ungültig, Sie können nur einen Schlüsseltyp und einen Werttyp angeben. – songyuanyao

Antwort

1

Sie

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

schreiben können eine Karte (std::map), dessen Schlüssel ein int und Daten sind zwei string s erstellen.

Daten einzufügen, können Sie

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

oder einfacher

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

Voll Beispiel schreiben:

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