繁体   English   中英

在地图中插入一对密钥

[英]Insert a pair key in map

在地图中插入一对的方法是:

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

那么,我该怎么做呢?

如果需要,您可以手动定义和填充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

首先,如果您在插入时构造键,您可能想改用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);

请参阅此处此处的示例

这有很多可能性。 您可以选择以下任何一个更适合您的。

  1. 使用 make_pair
 map<pair<int,int>, int> m;
 m.insert(make_pair(make_pair(5,20), 0));
  1. 使用大括号
 map<pair<int,int>, int> m;
 m.insert({{5,20}, 0});
  1. 首先声明一个 C++ 对
 pair<int,int> p(5,20);
 map<pair<int,int>, int> m;
 m.insert(make_pair(p, 0));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM