C ++ライブラリの機能一般的な使用方法の概要

  ACMライブラリ関数では、多くの、多くの一般的な操作と構造ああ、非常に実用的であるため、非常に重要であり、時には、まだこれらのライブラリ関数は、ライブラリ関数とその一般的な操作のコード番号にさらに見ています。

ディレクトリ

  1. 数学
  2. アルゴリズム
  3. ベクター
  4. セット
  5. 地図
  6. キュー
  7. スタック
  • 1.math

(1)int型ABS(int型)ダブルファブ(ダブル)

2つの非常に単純な関数、int型、ダブル、何も良い水の絶対値。

(2)二重CEIL(ダブルNUM)二重床(ダブルX)

これは、2つの丸め関数、使用頻度が高いと非常に一般的です。床が切り捨てられ、切り上げを切り上げています。

注実際の同数の両方の機能つまり、これが意味する場合は、中3つのパスを置くことで、彼らはすべての3を返されました。これは、計算の過程にある、問題の原因となる、期待される結果が整数であるが、演算処理あなたは2.9999999を取得し、あなたが丸め下る、あなたは2を取得していることがわかります、この場所は、多くの場合、間違っています切り捨てEPSを追加することを忘れないで、保存と同じようラインアップ。

私たちは、次のコードで浮動小数点の実行構造を理解することはできません

int型のmain()
{
    ダブル F =(0.3 - 0.1)* 10 
    coutの << << F てendl;
    printf(" %.20lf \ n " 、F)。
    COUT << CEIL(F)<< ENDL。
    COUT <<フロア(F)<< ENDL。
}

  私の出力は、

2

1.99999999999999977796

2

1

これら二つの機能は、EPSのない多くの場合、タイトルに初心者のために(私は自分自身について話して、実際には、大物が追加され始めた)、自分自身を思い出させます。

(3)二重POW(ダブルのx、ダブルy)は

この操作は、私がどのくらいの複雑さを測定していない、機能のx ^ yは、実際には、この基本的な質問よりも行うことですが、それは、金型を取り、オープン正方形の中で時には基本的にそれを使用していません。

別の用途は、番号または立方の数などではない数の二乗を計算することです。

あなただけのリスト上の元の数字ではないの正方形を丸めた後、それを処方した後、自分で判断する必要があります。これは非常に高速ですが、このことは、それを見つけるために、精度の限界、時々ない、大規模かつ比較的正確なまたは使用の半分を持っています。

(4)など三角杭、必要に応じて他の機能を、何も言うことを感じ、計算幾何学はmath.c最終決定権際に精度の注意、精度のカードは非常に一般的で、困難の後に何を学んだん。

  • 2.string

誰もが通常string.hので、遅すぎる、すべての後に、Stringクラスを使用したいんだろう基本的なプレー。

1.実際には、これらの機能は、希望の文字列は、主のstrcpy、とのstrcmpを使用して、非常に少ないと言っています。コピーの場合は、配列を決定するために使用される辞書は、実際には、文字列のみのタイトルを持つクラスに2未満である必要があり、時には何辞書を決定するためのstrcmp順序を使用することができます。

  2.void * memsetの(void *型の、int型のCH、size_tのN)。

機能説明:S戻るCHで置き換えられた現在位置の後ろにS nバイト(のtypedef unsigned int型size_t型)。
memsetの:配列のより大きな構造又はクリア動作(Baiduの百科事典から)最速の方法である期間メモリブロックに与えられた値を充填する効果
関数のプロトタイプは、string.hの中で、汎用的なオペレーティングを使用すると、0または-1に、CHことができ、すべての配列が急速に0または-1になることができるということです。
この関数は、バイト操作であるため、この機能の一定の操作が非常に小さい、8倍の速度ループの割り当てです!(実際には、高速な書き込みをするために、クール氏は述べています!)ビットをバック推奨、我々は良いと言って、使用しています! 

 

  • 3.algorithm

1.リストをトッピングすると、間違いなく私の友人有名です:無効ソート(最初RandomAccessIterator、RandomAccessIterator最後、比較COMP)。

この種のために私はあなたが最も簡単な使用に慣れていないよ、このような直接的な何かにある:ソート(、+ n)が、あなたは小さな配列のソートに達することができるようにということ。第三は、デフォルトでは大小規模の一種である場合は、比較の方法を定義することができ、比較関数です。あなたが小さいからであれば大に自分自身を書き込みます。そして、時間が少なく復帰にあまり時間よりも、あるライン(より何であるかを示す、ソート構造の、古典的な問題のためのタプルをソートする方法を、あなたはこの機能を使用して計算することができるので、あなただけの機能のCMPを記述する必要がありますすることができ1以上の戻り0)。あなたが大規模なために小さなしたい場合にも、そしてちょうどライン上よりも大きい場合、書き込みCMPに必要です。ペアは独自の比較を建てたので、並び替え、その対の多元的なグループには良い方法もありますが、あなたは、限り、両方のタイプがライン上で比較できるよう、タプル型に任意の二つのペアシェイプを使用することができますルールは、最初のキーワードに合わせて向かっている2番目のキーワードは、回を計算し、それが比較グループは、主に(高速書き込みに、バイナリの構造と比較関数を記述することができない場合、また、これと非常に快適です)タプルである、あるいはトリプルこの構造が単純すぎないが、ペアの特定の使用は、それらを繰り返さないで、スペースの都合の間、百度を所有することができます。

最後に、ソートソートアルゴリズムの様々なことができます、この種の基本的なスキームが表示されないことができるよりも速く、状況に応じて選択するだけでなく、され、その中にネストされて、現在最速のソートアルゴリズムの一つであり、ソートの効率について少し言いますそれはnlognの複雑さと考えられています。

2.lower_bound()和(UPPER_BOUND)

多くの場合、これらの二つの機能を使用すると、順序付けられたシーケンス内の番号の場所を照会する必要があるため、この操作は非常に一般的である、上使用されます

一般的な使用法はLOWER_BOUND(+ N、X)またはLOWER_BOUND(+ N、X、CMP)であります

彼らは、開始アドレス、終了アドレス、照会する値、比較関数です。第四比較関数はデフォルトで、デフォルトの位置はxに等しいより大きいを見つけることです、戻り値は下付きではありません!それはアドレスです。あなたは、配列の添字を取得したいので、あなたは開始アドレスの添字を取得するために切断する必要があります。

これら二つの機能を使用する場合には(通常は小さいから大型まで)、クエリの規則的な配列を保証しなければならないことに注意

LOWER_BOUND())(第一の位置のアドレスがxに等しいより大きい戻り、UPPER_BOUND最初の位置のアドレスがxに等しいより大きい返します。そうでない場合には、アドレスの末尾に戻ります。

しかし、あなたが思うだろう、この時間は、私は、xの位置を確認するために以下のことを行う方法を、実際には、あなたが降順で元の配列を入れ、その後、独自のルックCMP機能(フォームより大きい)を書くことができたいと思います。しかし、私はいつも、これはあまりにも面倒であることを感じて、あなたはすべての数字は非常に高速書き込みに、負の符号、適切なタイミングで位置し、クエリ-xクエリの行にある置くことができます。

3.いくつかの小さな機能が難しく、特に便利以外の何ものでもあります。

最大最小スワップ

これらに加えて、私はそれを使い切っていないものをやってみたかったです

  • 4.vector

1.機構ベクトルについて話をする権利

白、それは可変長配列として理解することができるため、ベクターが、私は、誰かがそう言ったとき、私はその新しい要素を理解することができます学ばなければならなかったので、私は本当に、このような理解はお勧めしませんが、それは(Oすることができますクエリの1)奇妙なスタッフ時間。しかし、アレイのないベクトル長になるだろう、実際には、それはすでに宇宙の良いスタート配列である、あなたは時間の要素を追加し、このベクターに行くたびに、実際には差や配列操作ではありません。これは、あなたが欲しい時である、ベクトルどのくらいのスペースは、あなたがそれを開くようにしたいですか?実際には、ときに開いて、それはダイナミックなオープンスペースで、おそらくそれは、100の大きさの始まりに過ぎないが、100及び全てが満たされている場合、それは連続した200の新しい領域を開き、この100をコピーします。 200はそこに着くと、その後100を解放します。完全な別の200場合は、400を開け、というように。実際には、時にはそれは、ベクターは、(このカードはそれが何人もいないはずです)遅い比較的ですが、基本的には十分で、害はないが、ベクトルの機能のいくつかは、いくつかの操作をO(N)の使用を、最小限に抑えるために、これは配列です、何も特別な。

2.vector <整数> A;

これは渡して、あまりにも多くの初期化、それのベクトル、およびについて話をする何のために、実際には、簡単な初期設定です。

3.プレス一back()、クリアクリア()

これらの2つの操作が最も一般的な操作であると言われ、そして多くの場合に使用する数字を構築する過程で使用することができます。

4.vetorとソート

ソート(a.begin()、a.end());

非常に暴力的な、しかし非常に使いやすいです。

5.vectorは魔法の操作の多くを建て、私はスピードのための追求に偉大な神CF見てきました、使用される唯一のベクトル配列は、そこに非常に多くのベクトル関数は、効率は多くのことを改善することができます覚えています(ただし、使用されていると気にしないでください配列、少し不快探して、その速度は練習を練習することができ向上させたい、操作を交換することができることを感じ、それは問題ではないではないでしょう)

  • 5.set

 

1.set原理は:ツリーが実際にバランスされ、後で、あなたが書くの構造は非常に良いです見つけることができます学びます、クエリおよびインサートの複雑さがLOGNあり、それが安定しているが、オープンスペースは一定ではありませんカードはハッシュにしてみてください、その後、時間をハッシュすることができた場合、小さなそれは、あります。注:のみが判断し、あなたが現れ、数回を判断することはできません。

2.insert消去

キーKEY_VALUEを挿入し、(KEY_VALUE)を挿入

消去(イテレータ)、値のイテレータポイントを削除

消去(第一、第二)、第一及び第二のロケータとの間の値を削除

消去(KEY_VALUE)は、キーKEY_VALUEの値を削除します

3.count(KEY_VALUE)

戻り値0がある場合はそれ以外の場合は、あなたは値が発生した回数を確認することができますが、それはコレクションですので、1

4.find(KEY_VALUE)

戻り値のイテレータ、ノーリターンの終わりがない場合は()

イテレータイテレータ

STLは、イテレータがイテレータ++があり、同様の配列の添字と同じことである持っていますが、ないジャンプを何度。

ツリーはイテレータのジャンプを何度も聞かせすることはできませんので、セットは、大規模なクエリのkではありませんので。

イテレータフォーマット:セット<整数> ::イテレータそれ。

  操作(それ++!;;それ= s.end()は()をs.begin =)のために、

イテレータは、それが指す値を取得する*へのポインタです。

6.lower_bound()和(UPPER_BOUND)

セットは、大きなkのクエリをサポートしていませんが、我々は、xが(に等しい)よりも大きい数を照会することができますが、最初の反復にも非常に良いものです。

7.な大きさ()、空()か何かのようないくつかの他のヒントは、ありますが、あなたが言うことは何もない、と思い出し一度使用します。

  • 6.map

実際には、セットほぼ同様に赤黒木が、より別のキー値、他の動作との組と本質的に同じ:1.map原理。もう一つの重要な特徴は、対応する値を照会する機能です。セットにおいて、キー値が格納され、マップがペア構造に格納され、最初のキーは、一度だけ表示されること、及び第二の値です。

2.mapが行うために使用しましたか?

使用するハッシュが、一般的にタイムカードは、その後、unordered_mapを使用する際には十分でない場合にはマップは、あなたがカウントするために使用することができ、時間を照会するために使用することができ、マッピングツールLOGN対応するキー値であり、あるいは単にLOGNハッシュを手書きし、あなたは前にできるはずです。メインマップはあなただけでああで本当に良い、のような、友人、あなたのお友達に戻ることができ、かつ配列することができブラケットを拡大することで、クエリに必要な値を入れて、簡単に書き込むことが本当にあります。

マップとセット同様のオンライン執筆良いの基本的な操作3.で多くのことをブログ、それらを繰り返すことはしません。

  • 7.queue

 

この構造は、多くのアルゴリズムに関与しているので、1.queueのみ、FIFOのデータ構造とすることができる、それが人気のライブラリのいずれかであるように、その実装は複雑ですが、非常に実用的ではないけれども、それは、非常に一般的です。

2.最も一般的に、チーム、チームに使用さ、それが空であるかどうか、尾、サイズを取得する最初のチームを取得し、非常に簡単に、それは行くことはありません。

3.優先キュー:データコンテナ、比較例の機能要素を保存するタイプのデータの種類であるPRIORITY_QUEUE <タイプ、コンテナ、機能>、容器。

一般的な使用方法は、後者の二つではなく、以下のとおりです。

    PRIORITY_QUEUE <整数> Q;  

チームはトップではなく、フロントを使用している場合、キューは、実際には最大ヒープ実装です。時間は、それがチームの最大のものを飛び出します。

最小ヒープ、その後、我々は戻って2つのパラメータを追加した場合、これは、デフォルトの最大ヒープであることに注意してください:

    PRIORITY_QUEUE <int型、ベクトル<整数>、大きい<整数>> Q;

ライン上のint型のintプットを変更していない場合。

例えば、単調なキューがキューを使用するように、使用済みのプライオリティキューがdjstl 

  • 8.stack

 

実際には1は、特に多くの操作などのスタックとキューは樽のように、反対のいくつかは、より多くのバックアウト後、数に進出し、キュー、スタックのために共通しています。

2.一般的な機能は、オンラインで、多くのことを行くことはありません。

3.:コンパイラのために、あなたはスタックと同等のものを実行している機能。多くのシミュレーションやスタックの構造が特に似もあります。単調なスタック。

 

 

私は私の手をオフにノックする必要がない、と行くために多くの場所を保存する方法あなたへの書き込み、すべての後、多くのオンラインのブログの書き込みは特にいっぱいです。

 

容量2823

おすすめ

転載: www.cnblogs.com/King-of-Dark/p/12030796.html
おすすめ