Как передать временный массив? Я хочу сделать что-то вроде этого:Как пройти временный массив?
#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
}
Требуется ли положительное целое число буквального в фигурных скобках параметра функции в []
? Если я включу этот литерал, будет ли он ограничивать, какие массивы я могу передать только массивам такого размера? Кроме того, как я могу передавать элементы массива с помощью ссылки rvalue или ссылки на константу? Поскольку вышеприведенный образец не компилируется, я предполагаю, что параметр параметра функции int&&[]
или const int&[]
не будет работать.
Вы можете использовать шаблон вывести размер. –
Почему бы не использовать 'std :: array' или' std :: vector'? – Charles
@ c650, я знаю, как их использовать. Я просто хочу узнать о массивах в стиле C. – CodeBricks