[STL] 1. STLのデータ構造(常に更新)


注:このブログ投稿は、主に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()のみ)

おすすめ

転載: blog.csdn.net/qq_39642978/article/details/111562006