C++とSTLの再レビュー

2111 ワード

夏休みと秋学期の学习があまりにも不真面目なため、今までいくつかの基础的な性质のものに対してまだ多くの疑问があって、ふだん问题をするのはあまり影响がありませんが、しかしやはり隠れた危険です.今日はC++とSTLの基本的な知識を振り返って、短時間でこれらのものを復習し、同時に以前分からなかったところをよく整理します.(本気じゃなかったことを後悔しています.さもないと今はこんなに弱くはありませんT_T)
自分だけの知識点を項目別に並べましょう.
(1).C++参照特性
(2).stringクラスに関連するライブラリ内のstringstreamは文字ストリーム(不思議なもの)を作成することができ、作成後は読み取りのようにcinで再び読み取ることができるが、速度が遅いだけで、具体的な使い方は以下の通りである:(不思議)
  stringsstream s(stringline);
  while(s>>x) sum+=x;

(3).従来のdefine maxn 10005の代わりにconst int max=10005を用いることが望ましい.
(4).初めてlower_bound関数を知ったのは、もともと高いものだと思っていたが、sortと同じレベルのSTLの中の関数で、古い血が噴き出していた(やはり私は寡聞で、これらさえ知らない==).
lower_bound関数は、左に開いて右に閉じた区間で指定された要素の位置を二分的に検索して下付きを返します.これは、ソートされた前提で、ソートされていなければ必ずしもそうではありません.指定された数値以上の要素の下表を返します.見つからない場合は、配列の最後の要素の位置+1を返します(境界を越えています).具体的な使い方は、次のとおりです.
int p=lower_bound(a,a+n,x)-a;
配列aのa[0]からa[n-1]の範囲でx以上の要素を探し、見つけたらこの要素の配列の下付きを返し、見つからなければnを返すという意味です.この関数は、もちろんソート済みの要素の位置を探すために適用できます.(一つ漏れを見つけて儲けた)
(5)不定長配列vectorは、勉強の過程で何度も聞いていたのですが、本当に一度も使ったことがないので(私は今日まで生きてきたのも奇跡=-=).
vectorはテンプレートクラスで、中には多くの操作がカプセル化されています.それは長さを変えることができる配列に相当し、多くの不思議な関数で呼び出すことができます.具体的には、ネット上には書かないでください.よく使われるのはv.size()です.v.resize(x); v.push_back(); v.pop_back();,それ以外にも不思議なものがたくさんあるので、これからもっと使って理解しなければなりません.
(6).setコレクションは、vector配列と同様にテンプレートクラスです.ただし、実装効果は数学のコレクションに似ています.挿入された要素を自動的に削除し、小さいものから大きいものに並べ替えます.ただし、ループするときに反復器を使用する必要があります.たとえば、次のようにします.
for(set::iterator i=a.begin();i<=a,end();++i);
これがSTLの中のSTLの中の反復器で、set集合の中の要素の遍歴を完成します.OK、後で具体的に検索感覚を使いましょう.
(7).mapマッピングは、高度なバージョンの配列のようにkeyからvalueに関連付けられ、さらには下付き(下付きではなく正確にはkey)に「string」タイプの値を付与したり、自動的にソートしたりすることもできますが、これは適用時に徐々に熟練していくしかなく、何ができるか知ってからよく使われるに違いありません.
(8).STLがスタックを持っているとは!!なんと持っているとは!!!私は壁に向かって考えに行きます.略.キュー!略.優先キューですか.の中でpriority_queuepqを通じて、優先権が数値が大きいほど優先度が高くなり、top()は優先度が最も高い要素を取り出すために使用されます.必要に応じて、構造体定義の優先メソッドを擬似関数としてカスタマイズできます.定義はpriorityになりましたqueue<,cmp> pq.
まあ、ここを見ると基本的な知識はもうほとんどありませんが、vector、set、map、stack、queue(priority)などのテンプレート類の活用については、実戦で練習してこそ長続きすることができます~~~~頑張ってください~