double配列へのポインターのベクトルを作成します。これらのポインタは、関数(つまりInsertIntoVector
)の終了後に有効ですか?後でのようにポインタをフェッチした場合GetVecElement
でも、ポインタは割り当てられたのと同じメモリ位置を指すことが保証されていますか?
class A {
vector<double*> vec;
void insertIntoVector(double x, double y);
void GetVecElement(int i, double& x, double& y);
};
A::insertIntoVector(double x, double y) {
double* xy = new double[2];
xy[0] = x; xy[1] = y;
vec.push_back(xy);
}
A::GetVecElement(int i, double& x, double& y)
{
x = vec[i][0]; // will the reference to the double array still be valid?
y = vec[i][1];
}