1. ホーム
  2. C++

C++共通ライブラリ関数一覧

2022-02-14 15:38:23
<ブロッククオート

この記事で紹介したライブラリは

<string> <cctype> <algorithm>

<cmath> <cstdlib> <iomanip> <numeric>

<スパン 1.   C++の標準ライブラリである文字列クラスstd: 文字列の使用方法

<テーブル 位置付け 開始 文字列の先頭を指すイテレータを取得する 終了 文字列の終端を指すIteratorを取得する 開始 逆方向の文字列の先頭を指すIteratorを取得します。 レンド 逆方向の文字列の終端を指すIteratorを取得する 容量 サイズ 文字列の大きさを取得する 長さ() size関数と同じ関数 最大サイズ 文字列の最大可能サイズ 容量 メモリの再割り当てを行わない場合の文字列の可能なサイズ 空であるかどうかの判定 リザーブ 予約スペース リサイズ スペースの再割り当て コンテンツ取得 コピー <スパン 文字列をスペースに c_str C 言語形式の const char* 文字列を取得する データ 文字列内容アドレスの取得 操作方法 スワップ スワップ機能 挿入 挿入文字 アペンド 文字を追加する プッシュバック 追加文字 イレーズ 削除する文字列 クリア 文字コンテナ内の内容をすべて消去する 置き換える 置換 担当 割り当てる 代入演算子と同じ 検索 見つける 検索、0を基準としたインデックス番号を返す rfind 逆検索 検索結果 部分文字列の中の任意の文字を検索し、最初の位置を返します。 検索結果 部分文字列を含まない任意の文字を検索し、最初の位置を返す 最終更新日 部分文字列のうち、最後の位置を含む任意の文字を検索します。 検索結果  部分文字列を含まない任意の文字を検索し、最後の位置を返す サブストリング サブストラ(n1,len) n1から始まる文字列の長さlenの部分文字列を取得する。 比較する 比較 文字列の比較(すべての関係演算子をサポート) 読む ゲットライン 入力ストリームから1行を読み取る 演算子 演算子[]です。 最初の数個の要素を取得します。 演算子 代入演算子

演算子

文字列リンク operator+= 演算子 += 演算子 等しいかどうかの判定 演算子! と等しくないかどうかを判定する。 operator< よりも演算子が小さいかどうかを判断する。 演算子>>  入力ストリームから文字列を読み込む 演算子<<  出力ストリームへの文字列の書き込み

2.cctype ライブラリ

<テーブル は ::isalphaを使用しています。 文字かどうか は ::iscntrlを使用しています。 制御文字であるか は ::isdigit を使用しています。 数字であるかどうか は ::isgraphを使用しています。 文字、数字、句読点の有無 は ::islower を使用しています。 小文字かどうか は ::isprintを使用しています。 印刷可能な文字かどうか は ::ispunctを使用しています。 句読点をつけるかどうか は ::isspace を使用しています。 スペースの有無 は ::isupperを使用しています。 大文字にするかどうか は ::isxdigitを使用しています。 16進数かどうか は ::tolowerを使用しています。 小文字に変換する ::toupperを使用します。

大文字に変換する

<スパン 3つのアルゴリズム 図書館

<テーブル

ループ

シーケンス内の各要素に対して操作を実行する

for_each()

<スパン 検索

シーケンス内で最初に出現する値を検索する

find(a,a+size,n) b=a+sizeのとき、つまり見つからず、aがポインタのとき、bを返す。

述語にマッチするシーケンスの最初の要素を検索します。

find_if()

ある配列の中で、部分配列が最後に出現する箇所を探す

find_end()

指定された値集合の中で、最初に出現する値をシーケンスで検索します。

find_first_of()

シーケンス内の隣接する値のペアを検索する

隣接_検索()

カウント方法

シーケンス中のある値の出現回数を数える

count()

シーケンスの中で述語にマッチした数を数える

count_if()

<スパン 比較

異なる2つの配列の最初の要素を探す

mismatch()

両方の配列の対応する要素が同じであれば真

イコール(a,a+n,b,cmp)

配列中のある位置と等しい値が、連続してn回出現することを探す。

equal_range(a,a+n,x)

<スパン 検索

ある配列の中で、部分配列の最初の出現箇所を探す

search()

ある配列の中で、連続するn番目の値を探す

search_n()

コピー

シーケンスの最初の要素からコピーする

コピー()

シーケンスの最後の要素からコピーする

copy_backward()

交換

2つの要素を入れ替える

スワップ

指定した範囲の要素を入れ替える

swap_ranges()

イテレータが参照する2つの要素を入れ替えます。

iter_swap()

トランスフォーメーション

指定した範囲の各要素にアクションを適用する

transform()

<スパン 交換

いくつかの値を指定された値で置き換える

replace()

述語を満たすいくつかの要素を置き換える

replace_if()

シーケンスをコピーする際に、要素を指定された値に置き換えます。

replace_copy()

シーケンスをコピーする際に述語を満たす要素を置き換える。

replace_copy_if()

<スパン 充填

すべての要素を指定された値で置き換える

fill()

最初のn個の要素を指定された値で置き換える

fill_n()

生成

すべての要素を1回の操作の結果で置き換える

generate()

最初のn個の要素を操作の結果で置き換える

generate_n()

<スパン 削除

指定された値を持つ要素を削除する

remove()

述語を満たす要素を削除する

remove_if()

シーケンスのコピー時に、指定された値を持つ要素を削除する

remove_copy()

シーケンスをコピーする際に、述語を満たす要素を削除する。

remove_copy_if()

唯一の

隣接する重複要素を削除する

ユニーク()

シーケンスのコピー時に隣接する重複要素を削除する

ユニークコピー()

<スパン リバース

要素の順序を逆転させる

<スパン リバース(a,a+n)

シーケンスのコピー時に要素の順序を逆転させる

reverse_copy()

<スパン リングシフト

ループ内での要素の移動

回転(a,a+m,a+n)

位置mで前後の配列を入れ替える

シーケンスのコピー時に要素を循環的に移動させる

rotate_copy()

ランダム

一様分布を使って、要素をランダムに移動させる

random_shuffle()

分割

述語を満たす要素をすべて前面に出す

パーティション

述語を満たすすべての要素を最初に置き、元の順序を維持する

安定したパーティション(stable_partition)

<スパン 並び替え

非常に優れた平均効率でソートされる

ソート(a,a+20,cmp)

bool cmp( int a, int b )

{ return a>b; }.

コンテナや文字列の中でbegin()で

同一の要素をソートし、元の順序を維持する

stable_sort()

シーケンスの最初の部分を順番に並べる

partial_sort()

シーケンスの最初の部分をコピーして順番に並べる

partial_sort_copy()

n番目の要素

n番目の要素を正しい位置に配置する

nth_element()

2値化検索

以上の値が最初に出現するものを探す。

lower_bound()

よりも大きい値の最初の出現を探す

upper_bound()

に対して挿入可能な値の最大範囲を(順序を崩さずに)求めます。

equal_range()

与えられた要素が順序付きで存在するかどうかを判定する

binary_search()

<スパン マージ

2つの順序付き配列をマージする

merge()

連続する2つの順序付き配列をマージする

inplace_merge()

<スパン 順序構造に対する集計演算

ある配列が他の配列の部分配列であるとき、真となる。

includes()

2つの集合の順序付き和集合を構成する

set_union()

2つの集合の順序付き交差を構築する

set_intersection()

2つの集合の順序付き差分集合を構成する

set_difference()

2つの集合の順序付き対称差集合(マージ・インターセクション)の構成

set_symmetric_difference()

ヒープ操作

ヒープに要素を追加する

push_heap()

ヒープからの要素のポップアップ

pop_heap()

シーケンスからヒープを構築する

make_heap()

ヒープをソートする

sort_heap()

最大値と最小値

2つの値のうち小さい方

min()

2つの値のうち、大きい方

max()

シーケンス中の最小の要素

min_element(a,a+n)

シーケンス中の最大の要素

max_element()

辞書比較

辞書順に並んだ2つの配列のうち、最初に来るもの

辞書的比較()

アライメントビルダー

次の辞書順

next_permutation()

辞書順で並べ替え

prev_permutation()

<スパン 4 cmath <スパン 図書館

<テーブル <スパン 絶対値 は ::abs を使っています。 は ::fabs を使用しています。 は ::fabsf を使用しています。 は ::fabsl を使用しています。 逆コサイン を使って、 ::acos; は ::acosf を使用しています。 は ::acosl を使用しています。 とにかくコード は ::asinを使用しています。 は ::asinf を使用しています。 は ::asinl を使用しています。 タンジェント を使って、 ::tan; は ::tanfを使用しています。 は ::tanl を使用しています。 ハイパーボリックタンジェント を使って、 ::tanh; は ::tanhfを使用しています。 ::tanhlを使用しています。 とにかくカット は ::atanを使用しています。 は ::atanfを使用しています。 は ::atanlを使用しています。 y/x 逆正接の は ::atan2を使っています。 は ::atan2f を使用しています。 は ::atan2lを使用しています。 四捨五入 は ::ceilを使用しています。 は ::ceilfを使用しています。 は ::ceillを使用しています。 コサイン は ::cos を使っています。 は ::cosf を使用しています。 は ::cosl を使用しています。 ハイパーボリックコサイン は ::cosh を使っています。 を使って、::coshf; は ::coshl を使用しています。 <スパン 正弦波 を使って、 ::sin; ::sinfを使用しています。 は ::sinlを使用しています。 <スパン ハイパーボリックサイン を使って、 ::sinh; は ::sinhfを使用しています。 は ::sinhlを使用しています。 値を参照する を使用して、::exp; は ::expf を使用しています。 は ::expl を使用しています。 下丸出し は ::floorを使用しています。 は ::floorfを使用しています。 は ::floorlを使用しています。 余りを求める は ::fmod を使っています。 は ::fmodf を使用しています。 ::fmodl を使用します。 value=x*2n の x の値を返す,n は eptr に格納される。 は ::frexp を使っています。 は ::frexpf を使用しています。 は ::frexpl を使用しています。 value*2exp の値を返す は ::ldexp を使っています。 は ::ldexpf を使用しています。 は ::ldexpl を使用しています。 <スパン 対数 は ::logを使用しています。 は ::logfを使用しています。 は ::loglを使用しています。 は ::log10を使用しています。 は ::log10fを使用しています。 は ::log10lを使用しています。 倍精度数値の値を仮数と次数に分解する。 ::modf を使用します。 は ::modff を使用しています。 は ::modfl を使用しています。 電力を計算する ::powを使用します。 は ::powf を使用しています。 は ::powlを使用しています。 処方箋 は ::sqrt を使用しています。 は ::sqrtf を使用しています。 は ::sqrtl を使用しています。

<スパン 5.cstdlib ライブラリ

<テーブル <スパン double atof(const char *str); 文字列strをdouble型に変換します。strtod(str, (char*)NULL) に相当します。 int atoi(const char *str); 文字列strをint型に変換します。と等価である。(int)strtol(str, (char**)NULL, 10)と同じです。 long atol(const char *str); 文字列strをlong型に変換します。strtol(str, (char*)NULL, 10)に相当します。 double strtod(const char *start, char **end);

文字列 start の接頭辞を double 型に変換する。変換の際,startの先頭の空白文字を飛ばし,それから数を構成する文字を1つずつ読み込む。endがNULLでない場合,未変換部分へのポインタを*endに格納する。

結果がオーバーフローした場合は適切な符号を付けてHUGE_VALを、アンダーフローした場合は0を返します。

<スパン long int strtol(const char *start, char **end, int radix);

文字列 start の接頭辞を long 型に変換し、変換時に start の先頭の空白文字をスキップする。end が NULL でない場合、未変換部分へのポインタを *end に格納する。

radixの値が2から36の間であれば,その基数で変換される。radixが0であれば,基数は8進数,10進数,16進数であり,0が8進数の先頭,0xまたは0Xが16進数の先頭である。いずれの場合も,文字列中の文字は,10と基数-1の間の数を表す文字である。基数が16の場合、先頭に0xまたは0Xを付けることができる。

結果がオーバーフローした場合、結果の符号に応じてLONG_MAXまたはLONG_MINを返し、errnoにERANGEを設定します。

unsigned long int strtoul(const char *start, char **end, int radix); strtol()に似ているが、結果が unsigned long 型で、オーバーフロー時に ULONG_MAX になる点が異なる。 int rand(void); 0からRAND_MAXまでの擬似乱数整数を生成する。RAND_MAXの値は少なくとも32767である。 void srand(unsigned int seed); 新しい擬似乱数列の種をseedに設定する。seedの初期値は1である。 void *calloc(size_t num, size_t size);

サイズ size の num オブジェクトの配列に十分なメモリを確保し,確保された領域の最初のバイトへのポインタを返す。

割り当てられたメモリ領域のビットは全て0に初期化される。

void *malloc(size_t size);

サイズ size のオブジェクトに十分なメモリを確保し,確保された領域の最初のバイトへのポインタを返す。

割り当てられたメモリ領域を初期化しない。

void *realloc(void *ptr, size_t size);

ptr が指すメモリ領域のサイズを size バイトに変更します。新しく割り当てられたメモリが元のメモリより大きい場合、元のメモリの内容はそのままで、追加された領域は初期化されない。新しく割り当てられたメモリが元のメモリより小さい場合、新しいメモリは元のメモリ領域の最初のSIZEバイトの内容を維持する。この関数は,新たに確保された領域へのポインタを返す。要求を満たせない場合は,NULL が返され,元の ptr が指すメモリ領域は変更されません.

ptrがNULLの場合、malloc(size)と同等の動作となる。

sizeが0の場合,free(ptr)と同じ動作となる。

void free(void *ptr); ptr は,動的割り当て関数 malloc,realloc,または calloc によって以前に割り当てられた領域を指していなければなりません. void abort(void)です。 プログラムを異常終了させる。機能は raise(SIGABRT) に似ています。 void exit(int status); atexitは登録と逆の順序で呼ばれ、開いているファイルはすべてリフレッシュされ、開いているストリームはすべて閉じられる。statusの値をどう返すかは実装に依存するが、0は正常終了を示し、EXIT_SUCCESSとEXIT_FAILUREも利用可能である。 int atexit(void (*func)(void)); プログラムが正常に終了したときに呼び出される関数funcを登録する。成功すれば0を返し、失敗すれば0以外の値を返す。 int system(const char *str); 実行環境に文字列strを渡す。str が NULL の場合、コマンドハンドラが存在すれば 0 が返される。strがNULL以外の値の場合、返り値は実装に依存する。 char *getenv(const char *name); name に関連する環境文字列を返す。文字列が存在しない場合は NULL を返します。詳細は実装依存です。

void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*compare)(const void *, const void *)) を使用します。

base[0]... . base[n-1] の間で *key にマッチする項目を探す。 size は各要素が占めるバイト数を示す。この関数は,マッチした項目へのポインタを返すが,マッチした項目が存在しない場合はNULLを返す.

ポインタ compare が指す関数は、キーワード key と配列要素を比較し、比較関数は次のような形式をとります。

int func_name(const void *arg1, const void *arg2);

arg1 はキーポインタ、arg2 は配列要素ポインタです。

戻り値は次のとおりでなければならない。

arg1 < arg2 の場合、戻り値は <0 となります。

arg1 == arg2 戻り値 == 0 のとき。

arg1 > arg2 のとき、>0を返します。

配列のベースは昇順(compare 関数で定義されたものと同じサイズ順)にソートされている必要があります。

void qsort(void *base, size_t n, size_t size.),

int (*compare)(const void *, const void *));

サイズ size の n 個のオブジェクトからなる配列ベースで昇順ソートします。

比較関数comparaseは次のような形式をとります。

int func_name(const void *arg1, const voie *arg2);

その戻り値は次のようなものでなければならない。

arg1 < arg2 , 戻り値 < 0.

arg1 == arg2 という値を返します。

arg1 > arg2 , 戻り値 > 0.

int abs(int num); int型変数numの絶対値を返します。 long labs(long int num); long型変数numの絶対値を返します。 div_t div(int numerator, int denominator); 分子/分母の商と余りを返し、結果は構造体型 div_t の 2 つの int メンバ quot と rem にそれぞれ格納されます。 ldiv_t div(long int numerator, long int denominator); 分子/分母の商と余りを返し、その結果は構造体型 ldiv_t の 2 つの long メンバ quot と rem にそれぞれ格納されます。

<スパン 6.イオマニップ <スパン 図書館

<テーブル デック 基数を10に設定します。これは "%d" と同じです。 ヘックス ベースを16に設定します。これは "%X" と等価です。 オクト ベースを8に設定します。これは "%o" と同じです。 setfill( 'c' ) 塗りつぶし文字をcに設定する setprecision( n ) 表示の10進数精度をnビットに設定する setw( n ) フィールド幅をn文字に設定する setw(n)

<スパン 使用方法 平たく言えば、プリセットの幅です

この制御は、出力される幅がnであることを保証することを意味し、例えば

cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 << setw(3)<< 1000<<endl;

結果は :

( space)(space)1(space)101001000

(デフォルトは右寄せ) 出力長が3より大きい場合 (<<1000) は setw(3) が動作しない。

setfill(char c)

使用法:プリセット幅の中に未使用の幅サイズがある場合、設定された文字で埋める c

例えば、 cout<<setfill('@')<<setw(5)<<255<<endl のようになります。

結果は :

@@255

setbase(int n)

数値をn進数に変換する。

cout<<setbase(8)<<setw(5)<<255<<endl のように。

cout<<setbase(10)<<setw(5)<<255<<<endl;

cout<<setbase(16)<<255<<endl;

結果は :

( <スパン スペース)(スペース)377

( <スパン スペース)(スペース) 255

( <スパン スペース)(スペース) f f

セットプレシジョン

setprecision(n) を使用して、出力ストリームに表示される浮動小数点数の桁数を制御します。C++のデフォルトのストリーム出力値は、有効な6桁です。

setprecision(n) を setiosflags(ios::fixed) と併用すると、小数点の右側の桁数を制御することができます。

setiosflags(ios::fixed) 実数を固定小数点方式で表現する。setiosnags(ios::scientific) と一緒に使うと、指数表現における小数点以下の桁数を制御することができます。 setiosflags(ios::scientific) 実数を指数関数的に表現する。 setiosflags(ios::fixed) 浮動小数点表示固定 setiosflags(ios::scientific) インデックス表示 setiosflags(ios::left) 左揃え setiosflags(ios::right) 右揃え setiosflags(ios::skipws) 先頭の空白を無視する setiosflags(ios::uppercase) 16 大文字で出力 setiosflags(ios::lowercase) 16 小文字出力 setiosflags(ios::showpoint) 小数点を強制的に表示する setiosflags(ios::showpos) シンボルを強制的に表示する

<スパン 7.数値 <スパン 図書館

<テーブル 蓄積する (最初 , 最後 , n)です。 nを初期値として、和算を行う。 隣接差分 <スパン (最初、最後、結果)です。 隣接する要素の差分を求める、firstからlastを引いた値、resultは差分列の元の配列の先頭の位置 checked_ adjacent_difference(first,last,result); inner_product(first1,first2,last1,last2)。 対応する要素を掛け合わせ、累積和を求める パーシャルサム <スパン (最初、最後、結果)です。 任意の位置までの累積和を求めます。result は、元の配列の先頭で和を求めた配列の位置となります。