如何将向量传递给函数

How can I pass a vector to a function?

本文关键字:函数 向量      更新时间:2023-10-16

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

#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});

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

添加:问题是我试图将我的向量传递给子构造函数的初始值设定项列表中的父类构造函数,并且制作一个 vector 的副本只是为了稍后传递它很麻烦。

像这样调用function

function({10,12,13});

这将使用 vectorstd::initializer_list 构造函数来构造参数。请注意,您接受按值vector,这可能会导致副本。您可能希望使用:

void function(const std::vector<int>& v) {}

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

如果您的编译器不支持initializer_list功能(Visual Studio或clang/gcc上缺少-std=c++11开关),则需要创建一个临时并手动初始化它。

std::vector<int> v;
v.push_back(10); v.push_back(12); v.push_back(13);
function(v);

试试这个

// 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 );

正如其他人所说:

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

2/使用 main() 中的 function( {10,12,13} ); 调用它。

3/在启用标准::initializer_list支持的情况下编译:g++ -std=c++0x filename.C

试一试。