Я пытаюсь прочитать неизвестное количество элементов в массиве, когда мой размер достигает текущей емкости, я вызываю функцию, чтобы удвоить размер и скопировать содержимое старого массива в новый массив. Я получил свой «&», но, похоже, он все еще передает массив по значению.Как динамически изменять размеры массивов?
#include <iostream>
#include <fstream>
using namespace std;
void resize(int*&, int&);
int main() {
ifstream in("numbers.input");
int cap = 10;
double avg;
int total = 0;
int size = 0;
int *arr = new int [cap];
int temp;
for(int i =0; i <cap; i++){
in >> temp;
if(size >= cap) {
resize(arr,cap);
}
arr[i]=temp;
total += arr[i];
size++;
}
avg = (double) total/cap;
cout << cap <<endl;
cout << size <<endl;
cout << total <<endl;
cout << avg;
return 0;
}
void resize(int *&arr,int &cap) {
cap*=2;
int* newArr = new int[cap];
for(int i = 0; i < cap; i++){
newArr[i] = arr[i];
}
delete [] arr;
arr = newArr;
}
Почему так сложно форматировать код перед публикацией ... –
Использовать вектор и избежать проблемы? –
Какие у вас есть доказательства того, что «массив» (фактически указатель) не передается по ссылке? Это не значит, что это сложно проверить для этого утверждения. – chris