在C++中是否有一個std容器,充當向量和鏈接列表之間的混合。我的意思是一個數據結構,它克服了std :: vector頻繁的重新分配開銷和潛在的過量內存分配,而是當結構用完空間時,它增加了一個指向下一個分配片段的指針,並且只有當片段數達到整個結構被拆分成連續的新塊,並且碎片的數量被設置爲0.C++矢量/鏈接列表混合
5
A
回答
3
std::deque
是最接近你描述的標準容器。然而,這並不是,正如(例如,它幾乎必須是一個數組數組而不是數組列表,因爲後者不允許恆定時間元素訪問)。
根據您的實際要求,它可能已經足夠接近。
+0
所以我基本上可以使用一個雙端隊列,只需添加我需要的代碼的幾行代碼就可以在達到特定級別的碎片時對其進行碎片整理。這個想法很自然地消除了內存跳躍和緩存未命中...... – dtech
4
如前所述,std::deque
接近您的要求。我只是想在std::vector
和std::deque
之間加上這個比較,我發現它非常有幫助。 An In-Depth Study of the STL Deque Container
相關問題
- 1. C++鏈接列表混淆
- 2. 鏈接列表/矢量中的指針
- 3. 製作鏈接列表的矢量?
- 4. 在PHP/HTML中混合有序列表,鏈接和變量
- 5. Cuda混合C項目鏈接
- 6. 混合C++和Fortran鏈接問題
- 7. 兩個鏈接列表的聯合 - C++
- 8. C++ stl集合或鏈接列表
- 9. 生成過度混合的矢量
- 10. 斯坦的混合模型 - 矢量化
- 11. C - 鏈接列表
- 12. C++鏈接列表
- 13. C++鏈接列表
- 14. 模仿向量的C++鏈接列表
- 15. C++排序向量或鏈接列表
- 16. C++鏈接列表:變量問題
- 17. 結合地圖和矢量和列表
- 18. c/C++鏈接列表
- 19. C:鏈表混亂
- 20. 合併2個鏈接列表並追加到鏈接列表的末尾C++
- 21. 鏈接列表 - 使用矢量添加/顯示
- 22. 將混合可存儲矢量傳遞給C函數
- 23. 通過混合項目遞歸複製兩個鏈接列表
- 24. 從矢量列表中查找最接近的矢量| Python
- 25. 矢量矢量C++
- 26. 鏈表基於矢量
- 27. Qt vs C# - 列表和矢量
- 28. 鏈接列表向量
- 29. C++ 11的λ:混合捕獲列表
- 30. 動態庫中鏈接問題,同時混合C C++代碼
你看過'std :: deque'嗎?它是否符合您的要求? – Asha
我認爲'std :: deque'可以這樣工作,但我不確定。 – Constantinius
@Constantinius我總是認爲'std :: deque'只是一種循環緩衝區,因此它的內存分配行爲與'std :: vector'類似。 –