是否可以将vector <int>值赋给std :: unordered <int,std :: vector <int>&gt;一行?

时间:2016-12-06 05:15:41

标签: c++ c++11

您可以通过执行以下操作来创建矢量:

std::vector<int> v = ({1,2,3});

假设你有:

std::unordered_map<int,std::vector<int>> m;

有没有办法做类似的事情:

m[1] = ({1,2,3}); 

即。有没有办法在括号中分配值,而不必先完成创建向量然后分配的两行步骤?

std::vector<int> v = ({1,2,3});
m[1] = v;

无论如何将上述两条线压缩成一条线?或者是唯一的选择,创建一个函数,它接受向量中的值并返回一个向量:

template <class T>
std::vector<T> func2( std::initializer_list<T> list )
{
    std::vector<T> v;
    for( auto elem : list )
    {
        v.push_back(elem) ;
    }
    return v;
}

然后执行:

m[1] = func2({1,2,3});

1 个答案:

答案 0 :(得分:4)

m[1] = {1, 2, 3};

删除括号。