add 命令でsizeを超えたときにsizeを二倍にした配列を確保しそこにデータをコピーする。
その後元のデータを削除しdataに新しい配列を登録するというものです
2,発生している問題
Aborted(core dumped) というエラーが出てしまう
3, 該当のソースコード
#include<iostream>
using namespace std;
class DoubleArray{
public:
int size;
double *data;
int pos;
DoubleArray(){
size = 8;
pos = 0;
data = new double[size];
}
DoubleArray(int sz){
size = sz;
pos = 0;
data = new double[sz];
}
void add(double d){
if(pos < size){
data[pos] = d;
pos++;
}else{
double *newdata;
newdata = new double[size * 2];
for(int i = 0; i < pos; i++){
newdata[i] = data[i];
}
delete[] data;
data = newdata;
data[pos] = d;
pos++;
}
}
void print(){
cout << data[0];
for(int i = 1; i < pos; i++){
cout << ", " << data[i];
}
cout << endl;
}
DoubleArray(const DoubleArray& orig){
pos = orig.pos;
size = orig.size;
data = new double[size];
for(int i = 0; i < pos; i++){
data[i] = orig.data[i];
}
}
~DoubleArray(){
delete[] data;
}
};
int main(){
DoubleArray d1;
cout << d1.size << "," << d1.pos << endl;
for(int i = 0; i < 20; i++){
d1.add(i);
}
cout << d1.size << "," << d1.pos << endl;
DoubleArray d2 = d1;
d2.add(100.0);
cout << d2.size << "," << d2.pos << endl;
d1.print();
d2.print();
}
回答1件
あなたの回答
tips
プレビュー