關於內容爲指針的vector對象的複製

for(vector<pair<string,string>*>::const_iterator it=rhs.wait_list.begin();it!=rhs.wait_list.end();++it)
{pair<string,string>* ppa=new pair<string,string>;
ppa=*it;//此處只會複製rhs.wait_list的指針,大問題!!!
wait_list.push_back(ppa);

}

    若此處只複製指針,那麼如果rhs.wait_list指針所指向的內容發生變化,而*this.wait_list

中的指針仍然認爲指針所指向的內容沒法變化,正如,你只知道要找的人的地址,而不知這個人是誰,如果這個人一旦搬家,你還按圖索驥,就大錯特錯。

正確代碼如下:for(vector<pair<string,string>*>::const_iterator it=rhs.wait_list.begin();it!=rhs.wait_list.end();++it)
{pair<string,string>* ppa=new pair<string,string>;
*ppa=**it;//此時複製的是*it指針所指向的對象
wait_list.push_back(ppa);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章