我有兩個陣列,如下所示。陣列的大小始終相同。
std::array<int, 5> keys;
std::array<int, 5> values;
我想將它們分別加載到鍵和值的映射中。
std::unordered_map<int, int> map;
for (int i = 0; i < keys.size(); i ) {
map.emplace(keys[i], values[i]);
}
是否沒有用于插入如下對的內置插入方法或函式?
map.insert(keys.begin(), keys.end(), values.begin(), values.end());
map.insert(keys, values);
謝謝
注意:通常情況下,我可以遍歷陣列來構建地圖,但我必須這樣做幾次。
uj5u.com熱心網友回復:
是的,您可以std::transform在std::inserter.
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;
int main() {
std::array<int, 5> keys{1,2,3,4,5};
std::array<int, 5> values{10,20,30,40,50};
std::unordered_map<int, int> map;
transform(keys.begin(), keys.end(), values.begin(), inserter(map, map.end()), [](const int &a, const int &b) {return make_pair(a, b);});
for (const auto &[key, val] : map) {
cout << key << ":" << val << endl;
}
}
輸出:
5:50
4:40
3:30
1:10
2:20
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495535.html
標籤:C
上一篇:基于條件的前向可變引數
