簡體   English   中英

STL雙端隊列:保持最小大小

[英]STL deque: keep minimum size

我使用的是STL雙端隊列結構,在算法的每次迭代中,我都從前面刪除了n元素,並在最后添加了n元素。 因此,基本上,我的雙端隊列大小從未改變,並且我正在進行數百萬次迭代。

有沒有辦法確保內存大小在其生命周期內不發生變化(或至少不會減少)? 也許由於雙端隊列的底層實現,這是不可避免的,但我想確定一下。

不,您不能總是期望這種行為。 這些是特定於實現的細節。 我認為標准中沒有任何規范要求這種行為。

但是,還有另一種解決方案。 您可以在boost中使用循環緩沖區。 (文檔: https : //www.boost.org/doc/libs/1_67_0/doc/html/circular_buffer.html )它為所需的確切功能提供了最優化的實現之一。 它將在給定大小的構造上分配內存(因為您提到的常量)。 並且在調用和pop_ {front / back}時,它不會取消分配內存,也不會在push_ {front / back}上分配。 它只是移動了開始和結束迭代器以指向適當的成員。

因此,您所需的所有操作都將是O(1)。 它還提供了空間局部性,因此遍歷非常快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM