在函数调用内启动数组

时间:2011-09-04 23:43:53

标签: c++ c++11

我的问题与c ++ 11标准和this old question的发布有关,因为我想知道现在是否可以在函数调用中创建数组/向量,而不是构建数组/向量之前,然后只是将它作为方法/函数的参数。

1 个答案:

答案 0 :(得分:2)

(假设你在谈论C ++ 11。)


void f(int x[]) {}            // remember, same as void f(int* x) {}
int main() { f({0,1,2}); }

//  error: cannot convert '<brace-enclosed initializer list>'
//         to 'int*' for argument '1' to 'void f(int*)'

可是:

void f(const int (&x)[3]) {}
int main() { f({0,1,2}); }

// <no output>

void f(std::array<int, 3> x) {}
int main() { f({0,1,2}); }

// <no output>

顺便说一下:

void f(std::vector<int> x) {}
int main() { f({0,1,2}); }

// <no output>

基本上,但有警告。