在 std::map 中插入数据

insert data in a std::map

我有以下容器:

map<int,string,string> data;

我一直在尝试使用以下代码(一次一个)在该地图中存储信息,但其中 none 个有效。

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

谢谢

你可以写

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