[問題] 用vector存指標,如果超過容量存位置會 …
我用VS 2008編譯。
我知道用vector當空間不夠會再自動獲得更多空間。
因此,如果我的vector存的是指標,且指標指向之前vector給我的空間,
當空間不夠時重新分配空間,我存的指標有可能會跑掉。
但我的情況是這樣:
class Node{
public:
int ID;
int x;
int y;
Node(){
x = Uniform(Limit); /// x座標隨機給值:0~Limit之整數
y = Uniform(Limit);
};
vector<Node*> neighbor; /// 一個陣列記錄Node的neighbor
void get_Inf();
};
void getNeighbor( Node* ptr ){
//// .....計算 Node間相對距離,如果滿足某條件則互為鄰居.... ///
(ptr+i)->neighbor.push_back(ptr+j);
(ptr+j)->neighbor.push_back(ptr+i);
}
void Node::getInf(){
for(unsigned i=0; i<neighbor.size(); i++)
cout<<"neighbor"<<i<<" = "<<neighbor[i]->ID<<endl;
}
int mian(){
Node* ptr = new Node[N];
getNeighbor( ptr );
//// Get each node info. ////
for(int j = 0; j<N; j++){
cout<<"========Node:"<<j<<"============="<<'\n';
(ptr+j)->getInf();
}
cout<<"=========================================="<<endl;
delete ptr [];
system("pause");
}
我的問題是如果我在Node class 只宣告vector空殼
最後再用function一個一個push_back,這樣子如果neighbor的空間滿了重新分配空間,
原來存的指標指向的位置還會指錯嗎?
如果還是會指錯,那該怎麼解決呢?
謝謝大家!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.132.128.158
※ 編輯: kkroy 來自: 202.132.128.158 (03/06 14:27)
推
03/06 14:41, , 1F
03/06 14:41, 1F
推
03/06 14:43, , 2F
03/06 14:43, 2F
→
03/06 14:43, , 3F
03/06 14:43, 3F
推
03/06 14:51, , 4F
03/06 14:51, 4F
※ 編輯: kkroy 來自: 202.132.128.158 (03/06 15:36)
→
03/06 15:37, , 5F
03/06 15:37, 5F
→
03/06 15:39, , 6F
03/06 15:39, 6F
推
03/06 15:40, , 7F
03/06 15:40, 7F
→
03/06 15:40, , 8F
03/06 15:40, 8F
→
03/06 15:42, , 9F
03/06 15:42, 9F
→
03/06 15:43, , 10F
03/06 15:43, 10F
→
03/06 15:44, , 11F
03/06 15:44, 11F
→
03/06 15:44, , 12F
03/06 15:44, 12F
推
03/06 15:58, , 13F
03/06 15:58, 13F
推
03/06 21:50, , 14F
03/06 21:50, 14F
→
03/06 21:50, , 15F
03/06 21:50, 15F
→
03/06 21:50, , 16F
03/06 21:50, 16F
→
03/06 21:50, , 17F
03/06 21:50, 17F
→
03/07 18:32, , 18F
03/07 18:32, 18F