簡體   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