在std :: map中插入数据

时间:2016-04-30 02:30:20

标签: c++ stdmap

我有以下容器:

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中存储数据?

谢谢

1 个答案:

答案 0 :(得分: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;
}