情况:我正在读取由几何块组成的3D文件格式。每个块依次引用(使用索引)到任何块(类似于可能可见的集合)。向量和许多索引
我正在设计的程序应该允许在列表中的任何位置插入和删除块。这意味着很多参考文献将会失效。此
一个解决办法是阅读文件时给指数转换为指针,所以有这样一个指针的向量:
class block;
class block
{
std::vector<block*> a_references;
// more data
};
std::vector<block*> a_blocks;
在我的程序,用户可以查看每个引用块a_blocks
数组的块。在这里,我想把它们显示为索引。当在指标上使用指针时,这意味着我将不得不为每个块执行std::find
以在数组中找到它的索引。这会造成我设想的很多开销?
哪种方法更好,哪些性能好处?
所以参考文献最初是以索引的形式给出的。如果某个引用的索引块被删除,应该发生什么?应该保留无效的参考吗?如果在相同的索引处创建一个新块,会发生什么?现在的旧参考文献是否指向这个新的区块? – Nabla
是你的问题,你只能给'block *'找不到你的'block'的索引?为什么你不能在其中存储块的索引?并且在块被插入/删除时更新索引? – David
@Nabla:当一个块被移除时,引用应该被保留,但是(最好)被设置为NULL,以便用户可以调整或移除它们。在相同索引处创建新块时,引用仍应指向旧块。 – Midas