我有一類名爲Group
:對象更新
class Group
{
int id;
string addr;
set<int> members;
...
};
我有一個指針存儲在這些容器多個組:
vector<Group*> grpVec
map<int, Group*> grpIdMap
map<string, Group*> grpAdMap
我保存這樣的指針:
//create and populate group object pointer Group *grp
grpVec.push_back(grp)
grpIdMap.insert(std::pair<int,Group*>(grp->id, grp))
grpAdMap.insert(std::pair<string,Group*>(grp->addr, grp))
現在,我想更新一個組對象。如果我只更新grpIdMap容器中的指針,所有其他容器中的相同對象指針是否會更新?
//Will this update the same pointer object in grpVec and grpAdMap?
grpIdMap.find(1)->second->members.insert(99)
這種方法有什麼問題嗎?
看起來你應該使用共享指針,即'std :: shared_ptr'而不是原始指針。 –
PaulMcKenzie
所有這些指針,實際存儲的對象是什麼? –
這是你的方法問題:如果'grp'是動態分配的,哪個容器負責釋放內存? – PaulMcKenzie