说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关与vector指针问题

编辑:说三道四文库 发布时间:2018-02-24 04:47
HTML文档下载 WORD文档下载 PDF文档下载
各位大侠:
假如我定义了一个名称为ATOM的类,然后两个指针容器heat_atom<ATOM*>,vatom<ATOM*>;这两个容器存储的东西相同。但是在程序中,我通过heat_atom这个容器修改了其中对应ATOM元素,但是vatom中相应的元素却没有变化,这是为什么呢?这两个容器存贮都是相同的指针,也就是这两个容器指向了相同的ATOM元素,但是为什么修改一个,另一个相应的元素却没修改呢?
期望大侠来指点迷津,谢谢!
容器采用的是类似内存拷贝的机制,也就是说Vector中的数据是一个独立与数据的一个数据拷贝,你改了这个拷贝的数据,原数据不受影响的。
假设:

ATOM *atom = new ATOM();  //atom 可以看成32bit 或者64 bit 的integer(地址), 指向存着ATOM object 的内存。
ATOM *btom = new ATOM();
heat_atom.push_back(atom);// 容器中存着地址
vatom.push_back(atom);

此时heat_atom[0] 和 vatom[0] 同时指向 atom 所指向的object

如果heat_atom[0] = btom , 那么heat_atom[0]指向 btom 所指向的object
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘