C ++での適切なスタックとヒープの使用法?
スタック −関数内で宣言されたすべての変数は、スタックからメモリを消費します。したがって、関数内のローカル変数はすべてスタック上に存在します。
ヒープ −これはプログラムの未使用メモリであり、プログラムの実行時にメモリを動的に割り当てるために使用できます。したがって、何かを宣言した関数よりも長く存続させたい場合は、それをヒープに割り当てる必要があります。
例
int main() { int a; //get memory allocated on stack. int *ptr=new int[7]; //memory for 7 integers allocated on heap. }
ヒープメモリの主な問題は断片化ですが、メモリ不足の問題はスタックで発生する可能性が高くなります。メモリサイズはヒープで変更できますが、スタックでは変更できません。
-
C ++ STL(3.5)でスタック
C ++ STLでは、スタックはLIFO構造として実装されるコンテナーとして使用されます。 LIFOは後入れ先出しを意味します。 Stackは、本が上下に並べられた本の山と見なすことができ、最後に挿入された本が最初に削除されるため、LIFO構造と呼ばれます。 スタックに関連付けられている操作は- Top() -この関数は、スタックの最上位要素への参照を返します。 構文 --name_of_stack.top() パラメータ -パラメータなし 戻り値 -スタックコンテナの最上位要素への参照 Push() -この関数は、要素をスタックコンテナに挿入するために使用されま
-
C ++の二項ヒープ?
二項ヒープは、二分ヒープの拡張として定義され、二分ヒープによって提供される他の操作と一緒に、より高速なマージまたは結合操作を提供します。 二項ヒープは、二項ツリーのコレクションとして扱われます。 二項ツリーとは何ですか? 次数kの二項ツリーは、次数k-1の2つの二項ツリーを取得し、一方を左端の子またはその他として扱うことで構築できます。 次数kの二項ツリーには以下のプロパティがあります。 BinomialTreeのノード数は正確に2kです。 。 BinomialTreeの深さはkです。 深さiには正確にkCiノードがあります。ここでi=0、1 、。 。 。 、k。