c++ - 如何将右值 std::vector 传递给函数?

标签 c++

我想做的是通过直接在调用中放入数组来调用包含 std::vector 参数的函数。我不想制作一个 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);

那么我该如何处理呢?我真的希望我写的东西不是完全愚蠢。

最佳答案

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

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

Live Demo

关于c++ - 如何将右值 std::vector 传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35807905/

相关文章:

c++ - Openssl X509 cert 获取人类可读的字符串

c# - .NET 包装器到 C++ 代码 : CS0122 is inaccessible due to its protection level error

c++ - 如何使用 Boost Graph Library 来布置顶点?

c++ - 配对堆——递减键的实现

C++ 编译时迭代与 get 函数

c++ - 指针和引用之间的底层区别是什么?

c++ - 如何在不引起递归的情况下使模板特化继承泛型基类?

c++ - 为什么这段代码有效,发生的事情的名称是什么?

c++ - std::forward 编译错误 VS2010

使用公共(public)和私有(private)重载构造函数时的 C++ 垃圾成员值