用 C++ 中的向量初始化 unordered_map

was*_*abi 0 c++ unordered-map initialization

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

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

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

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

  return umap;
}
Run Code Online (Sandbox Code Playgroud)

我找到了一些资源,并尝试通过一个范围进行初始化,但它也不起作用!

初始化无序映射

Kil*_*Kid 6

如何用向量初始化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;
}
Run Code Online (Sandbox Code Playgroud)

以上印刷品:20