关于内容为指针的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);
}

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