0
我有性病問題:: vector的不能把一個元素的指針在一個std向量
class myType
{
int i;
};
int main()
{
myType a1;
myType a2;
std::vector<myType> V;
V.push_back(a1);
myType* a1ptr = &V.back();
V.push_back(a2);
}
這一切工作正常之前,我添加A2,在PTR被點到一些有意義的記憶。 但一旦我添加了a2,ptr仍然指向相同的地方,但有一些垃圾內存。
這是怎麼回事?
看來,std :: vector V(2)不只是分配內存,它也試圖填充它會違反默認構造函數的兩個實例,因爲我沒有在我的情況下默認constrcutor,它失敗。 – cynric4sure
而且,即使我有一個默認的構造函數。這將是我的向量中已有2個元素,在我調用push_back之後,向量大小變爲3 – cynric4sure
如果您沒有默認構造函數,那麼您可以定義std :: vector然後使用reserve()來調整它的大小。這也將停止調整大小,並允許您像使用代碼一樣使用push_back()。如果向量在構建時被調整大小,那麼你可以使用普通索引而不是push_back。 – user2746401