来自相同对象

时间:2017-07-09 19:16:47

标签: c++ pointers

我有一种非常奇怪的行为,我想知道我错过了什么。

我有一个Bus对象,代表一个图表节点。

我有Branch个对象,表示图形边缘。

然后我有一个Circuit对象来托管公交车和分支机构。

Circuit对象具有创建addBus对象的函数Bus,将副本存储在向量中并将指针返回到向量中的Bus对象。

分支使用这些指针“记住”它连接的两个节点。请参阅代码中的main函数。

Circuit中,函数compile_all将创建一个字典,其中包含指向总线向量中Bus个实例的指针及其对应的向量索引。这允许我对总线和分支进行编号,并构建将用于电路矩阵计算的邻接矩阵等。

问题是,我从Bus函数获取的addBus实例的指针以及我在{{1}中再次循环总线向量时获得的指针功能不同。

我在向量中插入对象时的指针值:

compile_all

指针值,当我在compile_all函数中循环向量时:

ptr: 0x555d54bfc0d0
ptr: 0x555d54bfc268
ptr: 0x555d54bfc4d0
ptr: 0x555d54bfc598
ptr: 0x555d54bfc990
ptr: 0x555d54bfca58

我不明白为什么那些不同,因为他们指向的对象是相同的。

set: 0x55b59aafd670
set: 0x55b59aafd738
set: 0x55b59aafd800
set: 0x55b59aafd8c8
set: 0x55b59aafd990
set: 0x55b59aafda58

1 个答案:

答案 0 :(得分:0)

std :: deque或std :: list应该可以工作。