如何将r值std :: vector传递给函数?

时间:2016-03-04 23:25:51

标签: c++

我想做的是通过直接在调用中放入一个数组来调用包含std::vector参数的函数。我不想创建一个向量然后将它传递给函数,但我想在函数中放置大括号。这是一般的想法:

void doSomething(std::vector<int> arr)
{
    std::cout << arr[0] << std::endl;
}

int main()
{
    doSomething({ 1, 2, 3 });
}

这给了我一个错误。我也尝试使用lambda表达式,我不太熟悉,但这里是:

doSomething([]()->std::vector<int>{ return{ 1, 2, 3 }; });

这不起作用。这是我不想要的:

std::vector<int> a {1, 2, 3};
doSomething(a);

那我该怎么做呢?我真的希望我写的不是完全愚蠢的。

1 个答案:

答案 0 :(得分:6)

您可以使用从初始化列表初始化的临时向量:

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

Live Demo