西瓜の備忘録

競プロとかで気づいたこととか考察を書き留めるためのブログ

競プロで使えそうな関数とか

タイトル通り

 

関数

std::min()

std::max()

言わずと知れた最小最大を返す関数

DPを更新するときとかによく使う

ex)dp[i][j] = max(dp[i-1][j],dp[i-1][j-A[i]])

ナップザックDP

std::sort()

ソートを一から実装する必要がないときは普通これを使う

ex)sort(array,array+N)

ex2)sort(vector.begin(),vector.end())

昇順ソート

std::fill()

配列とかを初期化するときとかに使う

ex)fill(array,array+N,0)

配列0埋め

std::max_element()

std::min_element()

最小値、最大値のイテレーターを返す関数

ポインタを使うと値を得ることができる

ex)cout << *max_element(array,array+N) << endl

配列の最大値を出力

std::accumulate()

総和を返す関数

関数オブジェクトを使うと総乗を求められるらしいけど普通に実装したほうが早い

ex)sum = accumulate(array,array+N,0)

配列の総和を取得 第三引数は初期値

std::abs()

絶対値を返す関数

ex)cout << abs(num) << endl

 

std::to_string()

数値をstring型にするときに使う

ex)string s = to_string(3.1415)

 

std::stoi()

string型を整数型にするときに使う

c++11だとコンパイル失敗するのとlong long型にするときにはstoll()にすることに注意

ex)int num = stoi("810")

 

std::swap()

2つの変数の値を交換するときに使う

ソート実装するときとか並び替えのシミュレーション時によく使う

ex)if(A[i] > A[i+1])swap(A[i],A[i+1])

昇順ソートするときの交換する部分

 using std::swapと先に宣言しないとコンパイルエラーが起きる(?)

 

 以下参考にしたページ等

C++ライブラリ - C++入門

minus9d.hatenablog.com

qiita.com