目次
注:このブログ投稿は、主にSTLの各データ構造の3つのメンバー関数(プレスイン、ポップアップ、トップデータ)の関数名を記録することを目的としていますが、メンバーはempty.empty()やlengthなどです。 size()はSTLで使用されます。のすべてのデータ構造で同じ名前が使用されているため、繰り返しません。
合計:比較表
データ構造 | STLでの名前 | 入る | アウト | 上 | 注意 |
---|---|---|---|---|---|
最大ヒープ | priority_queue <タイプ> | Q.push() | Q.pop() | Q.top() | キューですが、キューの先頭のreturnメソッドはQ.front()ではなく、最大のヒープの「ヒープのトップ」を意味するQ.top()です。 |
二重リンクリスト | deque <タイプ> | Q.push_front()、Q.push_back() | Q.pop_front()、Q.pop_back() | Q.front()、Q.back() | 二重リンクリストであるため、すべての操作には前面と背面の2つのタイプがあります。 |
非反復的な組み合わせ | set <タイプ> | st.insert() | なし(他のタイプの消去と同じように削除するだけです) | なし(他のタイプと同じヘッドイテレータst.begin()とエンドイテレータst.end()のみ) | セットは特別です、説明のためにブログ投稿の3番目の部分を参照してください |
1つ、priority_queue(最大ヒープ)
参照: CSDNブロガー[WhiteJunior]の記事の理解とC ++でのpriority_queueの使用
priority_queue
文字通り優先キューとして翻訳され、キューの拡張として、優先キューはヘッダーファイル<queue>に含まれます。
1.テンプレートパラメータ
優先キューには3つのパラメータがあり、後者の2つにはデフォルトのパラメータがあります。その宣言形式は次のとおりです。
priority_queue< type, container, function >
これらの3つのパラメーターのうち、最後の2つには正式なパラメーターがあり、省略できますが、最初のパラメーターは省略できません。
その中で:
type:数据类型;
container:实现优先队列的底层容器;
function:元素之间的比较方式;
コンテナの場合、要件は、ベクトルや両端キューなどの配列の形式で実装されたコンテナである必要がありますが、リストではありません。
STLでは、デフォルト(次の2つのパラメーターなし)では、ベクトルがコンテナーとして使用され、演算子<(符号未満、行の先頭が最大値)が比較方法であるため、最初のパラメーターのみがが使用され、priorityキューはデフォルトで最大ヒープに設定され、毎回ヒープ出力の最上位要素が現時点でのヒープ内の最大要素になります。
2.簡単な説明
優先度付きキューは比較的重要なデータ構造です。二項式キューで記述されます。キュー内の最大値または最小値をO(log n)効率で見つけることができます。最大値または最小値はどれですか?の性質に応じて優先キューが作成されます。つまり、人工的な設定比較関数(3番目のパラメーター関数)が決定されます。
3.メンバー関数
入る | アウト | 上 |
---|---|---|
Q.push() | Q.pop() | Q.top() |
4.最小ヒープを達成する方法は?
方法1: {1、-2、3}が{1、2、-3}になるなど、入力する要素の数を逆にして、priority_queueに格納すると、元の配列の最小値になります。ヒープですが、数値は元の配列の反対になります。
方法2: 1で説明したように、テンプレートパラメーターの3番目のパラメーターをカスタマイズし、比較関数を比較よりも大きく設定します。つまり、関数は** operator> **と同じであり、最小のヒープになります。
Two、deque(双方向キュー)
deque
リテラル名は双方向キューであり、ヘッダーファイル<deque>に含まれています。
参照: CSDNブロガー[Chihiro〜]記事deque使用法の詳細
1.テンプレートパラメータ
deque< Type >
2.簡単な説明
dequeは線形の双方向キューであり、最初または最後から挿入できます。同様に、最初または最後から削除できます。もちろん、任意の位置での挿入および削除操作も含まれます。
3.メンバー関数
二重リンクリストであるため、すべての操作には前面と背面の2つのタイプがあります。
入る | アウト | 上 |
---|---|---|
Q.push_front() | Q.pop_front() | Q.front() |
Q.push_back() | Q.pop_back() | Q.back() |
3、セット(コレクションを繰り返さない)
set
ためには、コレクションを繰り返していない、それは、<設定>ヘッダ・ファイルに含まれています。
1.テンプレートパラメータ
set< Type >
2.簡単な説明
set
コレクションを繰り返さないために、つまり、セットに保存したい2つの同一の要素がある場合、セットはそのうちの1つだけを保持し、セットは保存された要素を自動的に並べ替えます。
3.メンバー関数
セットはかなり特別で、挿入されませんがpush
、挿入insert
としてではなく、セットが自動的にソートされるため、挿入された要素が必ずしも後ろに保存されるとは限らないため、プッシュの意味をとることはできませんが、挿入を行うことは意図されていました。(プッシュは後方に挿入することを意味し、挿入は後方または任意の位置に挿入することを意味します)。
セットは自動的にソートされるため、最後の要素が何であるかを判別するのは困難です。したがって、セットタイプにはポップがなく、削除には消去のみが使用されます。
入る | アウト | 上 |
---|---|---|
st.insert() | なし(他のタイプの消去と同じように削除するだけです) | なし(他のタイプと同じヘッドイテレータst.begin()とエンドイテレータst.end()のみ) |