情況:我正在讀取由幾何塊組成的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