我有一個將元素存儲在boost :: ptr_vector中的算法。一旦分配到元素的指針不會改變,直到ptr_vector被銷燬,對算法來說非常重要。另一方面,我需要排序ptr_vector。我認爲(可能天真),因爲普通的std :: sort交換元素,它將簡單地交換ptr_vector內指針的順序,而不用新建和刪除。另一方面,我在this post中看到指示:排序ptr_vector實際上可能會更改元素指針。有人可以確認實際發生重新分配嗎?有沒有辦法避免它?如何在不更改元素指針的情況下對boost :: ptr_vector進行排序
1
A
回答
0
指針向量作爲一個容器顯然正在排序。
假如你想保留的所有有效迭代器和元素引用,你應該使用
- 的boost :: stable_vector
- 或可能是一些組合/升壓用多指標
可悲的是(?)我不認爲目前有什麼結合了這兩個概念。當然,這樣的事情可以寫出來,然後Boost Intrusive
可以非常有助於管理實施。
1
我現在認爲我的恐懼可能不是是有道理的。看起來the post that prompted my concerns引用標準庫排序,這確實會導致交換和重新分配元素。但ptr_vector有一個排序的成員函數實現,我有充分的理由期望它保留元素指針並避免重新分配。
相關問題
- 1. 如何在不改變原始數組排序的情況下對指針數組進行排序?
- 2. 如何在不更改索引的情況下對列表框進行排序
- 3. 的boost :: ptr_vector和指針
- 4. 在不改變排序順序的情況下對數組進行排序
- 5. 如何從boost :: ptr_vector中刪除指針而不刪除對象?
- 6. 如何在我的情況下對變量進行排序
- 7. 如何在不使用指針的情況下模擬指針?
- 8. 對指針進行排序指針
- 9. 在不更改「Sl號」列的情況下排序的JTable行
- 10. 如何在不對我的索引進行排序的情況下執行groupy.apply()?
- 11. 在每種情況下,`std :: set`是否對元素進行排序?
- 12. boost :: ptr_vector排序函數
- 13. 如何在不創建DataView的情況下對DataTable行進行排序?
- 14. 如何對{}的元素進行排序?
- 15. 如何在不重置索引的情況下對數組進行排序?
- 16. 如何在不使用collections.sort()的情況下對arraylist進行排序?
- 17. 如何在不點擊標題的情況下對DHTMLX網格進行排序
- 18. Rails如何在不使用數組的情況下對模型進行排序?
- 19. 如何對NSMutableArray元素進行排序?
- 20. 在不使用eval的情況下更改元素參考
- 21. 在不更改行的情況下進行輸入
- 22. 如何對指針數組指向的數組進行排序?
- 23. 如何在不啓用指南針的情況下計算getOrientation()?
- 24. 對指針列表進行排序
- 25. 如何對父元素中的XML元素進行排序?
- 26. 如何在不改變變量的情況下進行遞歸
- 27. 如何在不更改setAutoCreateRowSorter的排序的情況下刷新表(JTable)?
- 28. 如何在不使用Endeca中的動態排序的情況下對過濾器進行排序?
- 29. 如何在不使用xsd:sequence的情況下執行排序?
- 30. 在DataMapper中對元素進行排序