我的问题与c ++ 11标准和this old question的发布有关,因为我想知道现在是否可以在函数调用中创建数组/向量,而不是构建数组/向量之前,然后只是将它作为方法/函数的参数。
答案 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>
基本上是,但有警告。