【发布时间】:2017-07-09 00:06:16
【问题描述】:
如何传递一个临时数组?我想做这样的事情:
#include <iostream>
int sum(int arr[]) {
int answer = 0;
for (const auto& i : arr) {
answer += i;
}
return answer;
}
int main() {
std::cout << sum( {4, 2} ) << std::endl; // error
std::cout << sum( int[]{4, 2} ) << std::endl; // error
}
在函数参数的大括号[] 中是否需要正整数文字?如果我包含该文字,它是否会限制我只能将哪些数组传递给该大小的数组?另外,如何通过右值引用或常量引用传递数组元素?因为上面的例子不能编译,所以我认为将函数的参数类型设置为int&&[] 或const int&[] 将不起作用。
【问题讨论】:
-
您可以使用模板来推断大小。
-
为什么不使用
std::array或std::vector? -
@c650 ,我知道如何使用它们。我只是想了解 C 风格的数组。
-
您可以考虑接受我更新的答案,因为它实际上允许您使用您最初请求的语法。此外,它比 Kerrek 的回答更通用。
标签: c++ arrays reference parameter-passing temporary