C++ C++;如何调整指针数组的大小以最好地添加新值?
大家好,我必须为类创建一个程序,该程序应该在类中的一个指针数组中存储浮点值。我查了一下指针的工作原理,我想我明白了。也许我没有?因为我的代码做了一些奇怪的事情C++ C++;如何调整指针数组的大小以最好地添加新值?,c++,arrays,class,pointers,methods,C++,Arrays,Class,Pointers,Methods,大家好,我必须为类创建一个程序,该程序应该在类中的一个指针数组中存储浮点值。我查了一下指针的工作原理,我想我明白了。也许我没有?因为我的代码做了一些奇怪的事情 private: float * messdaten; int mdi = 0; public: CMesswerte(){ } void setDaten(float daten[], int size) { float
private:
float * messdaten;
int mdi = 0;
public:
CMesswerte(){
}
void setDaten(float daten[], int size) {
float* temparray;
temparray = new float[mdi];
for(int i=0; i < mdi; i++){
*(temparray + i) = *(messdaten + i);
}
messdaten = new float[size+mdi];
for(int i=0; i < mdi; i++)
*(messdaten + i) = *(temparray + i);
for(int i=mdi; i < mdi+size; i++) {
*(messdaten + i) = daten[i];
}
mdi=mdi+size;
}
这是我得到的输出:
1 - 1.5
2 - 2.3
3 - 5.5
4 - 0.6
5 - 7.5
6 - 0
7 - 3.36312e-44
8 - 0
9 - 1.5
10 - 2.3
但是我得到了一个错误的输出?我不明白为什么。。。请帮忙。
(注意我不允许使用向量)行
*(messdaten + i) = daten[i];
这是错误的。daten
的索引应该从0开始,但在这里它实际上从mdi
开始
应该是:
*(messdaten + i) = daten[i - mdi];
另一个选择是改变
for(int i=mdi; i < mdi+size; i++) {
*(messdaten + i) = daten[i];
}
for(int i=mdi;i
到
for(int i=0;i
另外,为了避免内存泄漏,请执行以下操作:
- 添加
delete[]临时数组代码>在函数的末尾
setDaten
- 将
的初始化添加到messdaten
并添加nullptr
delete[]messdaten代码>之前
messdaten=新浮点[size+mdi]代码>
for(int i=mdi; i < mdi+size; i++) {
*(messdaten + i) = daten[i];
}
for(int i=0; i < size; i++) {
*(messdaten + size + i) = daten[i];
}