如何将向量传递给函数?

时间:2014-04-05 14:07:54

标签: c++

所以,我想在这里做的是在调用函数之前将向量传递给函数而不创建向量。它只是我实际上的简化模型,所以这似乎有点不必要,但请耐心等待:)

#include <iostream>
#include <vector>

using namespace std;

void function(vector<int> intVector)
{
    for (int i = 0 ; i < intVector.size(); i++)
    cout << intVector[i] << endl;
}

int main(int argc, char *argv[])
{
    function(vector<int> = {10,12,13});   //does not work :(
    system("PAUSE");
    return EXIT_SUCCESS;
}

此代码无法编译

function(vector<int> = {10,12,13});

我想知道我需要做些什么才能让它发挥作用。谢谢!

增加: 问题是我试图将我的向量传递给父类&#39;子构造函数的初始化列表中的构造函数,以及为了稍后传递它而制作向量的副本很麻烦。

3 个答案:

答案 0 :(得分:3)

像这样呼叫function

function({10,12,13});

这将使用std::initializer_list的{​​{1}}构造函数来构造参数。请注意,您接受vector的值,这可能会导致副本。您可能想要使用:

vector

如果您不修改参数,则作为您的签名。

如果您的编译器不支持void function(const std::vector<int>& v) {} 功能(Visual Studio或initializer_list / -std=c++11上缺少clang开关),则需要创建临时和初始化手动。

gcc

答案 1 :(得分:2)

试试这个

// Create vector
std::vector<int> vi{ 10, 12, 13};

// Pass vector to function
function( vi );

// Receive vector parameter at function

  // Option 1: If you want to modify the passed vector
  void function( std::vector<int> & vp );

  // Option 2: if you do not want to modify the passed vector
  void function( std::vector<int> const & vp );

答案 2 :(得分:1)

正如其他人所说:

1 /使用function(const std::vector<int>& intVector)作为功能签名。

2 /从main()调用function( {10,12,13} );

3 /启用std :: initializer_list支持编译:{{1​​}}

放手一搏。