在地图中插入一对的方法是:
std::map<char,int> mymap;
// first insert function version (single parameter):
mymap.insert ( std::pair<char,int>('a',100) );
但是现在我试图将其插入地图中
map<pair<int,int>, int> map1; //(pair is the key and int is a value)
我尝试过:
pair<int,int> p;
p.first = 5;
p.second = 20;
map1.insert(pair<int,int>,double> (p,0));
那我该怎么办?
答案 0 :(得分:0)
您可以根据需要手动定义和填充pair
,但是使用make_pair
或(自C ++ 17起)pair
的推导指南更为常见和惯用:
map1.insert(std::make_pair(std::make_pair(5,20),0));
map1.insert(std::pair{std::pair{5,20},0}); // C++17 or later
答案 1 :(得分:0)
首先,如果要在插入时构造键,则可能要改用emplace
,因为它将在适当位置构造键和值,并且还可以更好地转发传递给它的参数而无需显式施工。因此,您的第一个示例将简化为
mymap.emplace('a', 100);
第二个示例肯定会像
map1.emplace(std::piecewise_construct, std::forward_as_tuple(5, 20), std::forward_as_tuple(0));
以及从C ++ 17开始的版本也可以
map1.emplace(5, 20, 0);
答案 2 :(得分:0)
有很多可能性。您可以选择以下更适合您的任何一种。
- 使用make_pair
map<pair<int,int>, int> m;
m.insert(make_pair(make_pair(5,20, 0));
- 使用花括号
map<pair<int,int>, int> m;
m.insert({{5,20}, 0});
- 首先声明一个C ++对
pair<int,int> p(5,20);
map<pair<int,int>, int> m;
m.insert(make_pair(p, 0));