所以,我想在这里做的是在调用函数之前将向量传递给函数而不创建向量。它只是我实际上的简化模型,所以这似乎有点不必要,但请耐心等待:)
#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;子构造函数的初始化列表中的构造函数,以及为了稍后传递它而制作向量的副本很麻烦。
答案 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}}
放手一搏。