我有一种非常奇怪的行为,我想知道我错过了什么。
我有一个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
答案 0 :(得分:0)
std :: deque或std :: list应该可以工作。