私が理解しているように、 deque は循環バッファーであり、スペースが不足すると、新しいスペースを割り当てます (可能な場合)。両端キューを制限する方法はありますか? または、最大サイズを超えないようにする唯一の方法は、デキューするデータを挿入するたびに確認することですか?
			
			3202 次
		
4 に答える
            2        
        
		
はい、すべてのSTLコレクションと同様に、テンプレート化されたパラメーターの1つはアロケーターです。
したがって、メモリを追跡しbad_alloc、メモリが使用可能であっても、この制限を超えた場合にスローする独自のカスタムアロケータを作成できます。
ちなみに、astd::dequeは通常、各ページに固定数の要素が含まれる「ページ」のコレクションとして実装されます。
「どこでも」挿入または削除できる循環バッファの実装が必要な場合はstd::deque、使用するのが最も効率的ではありませstd::listん(ただし、ブーストで使用できる循環コレクションがあります)。
于 2012-10-22T09:19:38.177   に答える
    
    
            1        
        
		
deque循環バッファではありません。これは通常、リンクされた配列のコレクションとして実装されます。循環バッファについてはcircular_buffer、Boostを参照してください。
于 2012-10-22T09:20:32.777   に答える
    
    
            1        
        
		
私の経験では、最も簡単な方法は、ラッパー クラスで両端キューをカプセル化し、2 つのメンバー関数のラッピングpush_backとpush_front 
于 2012-10-22T09:55:04.460   に答える
    
    
            0        
        
		
両端キューは循環バッファーではありません。循環バッファとして実装される場合がありますが、実装の詳細はユーザーから隠されています。サイズチェックを行うラッパークラスまたは便利な関数を作成することをお勧めします。
于 2012-10-22T09:22:20.297   に答える