gpt4 book ai didi

c++ - 通过指针更新多个 STL 容器中的对象

转载 作者:行者123 更新时间:2023-11-28 00:13:59 26 4
gpt4 key购买 nike

我有一个名为 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)

这种方法有什么问题吗?

最佳答案

如果指针都指向同一个对象,那么可以使用任何指针来更改该对象。


让我们“以图形方式”看一下:

+-------------------+| pointer in vector | -----\+-------------------+       \                             \+--------------------+        \     +---------------+| pointer in one map | -------->--- | actual object |+--------------------+        /     +---------------+                             /+----------------------+    /| pointer in other map | --/+----------------------+

关于c++ - 通过指针更新多个 STL 容器中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31509780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com