使用c ++中的向量初始化unordered_map

时间:2018-01-29 21:57:49

标签: c++ initialization unordered-map

我只是想用向量初始化一个unordered_map。

当我尝试下面的代码时,代码无法编译。

使用向量初始化unordered_map的最短语法是什么?如何在不使用循环的情况下实现以下方法。

unordered_map<int, int> convertToMap(const vector<int>& v) 
{
  unordered_map<int, int> umap(v.begin(), v.end());

  return umap;
}

我找到了一些资源,我试图通过范围初始化,但它也没有用!

initialize-unordered-map

1 个答案:

答案 0 :(得分:3)

  

如何用vector初始化unordered_map?

如果你的向量包含元素对,那么一个可以被解释为键,一个可以被解释为值,那么你可以使用范围初始化:

#include <vector>
#include <unordered_map>
#include <iostream>
#include <utility>


int main() 
{

    std::vector<std::pair<int, int>> v = { {1,10}, {2,20}, {3,30} };
    std::unordered_map<int, int> map(v.begin(), v.end());

    std::cout << map[2] << std::endl;

    return 0;
}

以上版画:20