なんか簡潔にかけて、すぐ使えそうな奴。
思いつくぶん抜粋。
文字列末尾削除
string s = "abc"; s.erase(--s.end());
char型からint型に変換して演算
文字コードを利用したもの。’0’は48番に当てられているため、’0’で引き算すると元の数字に戻る
char c = '5'; int num = c - '0'; cout << num - 1 << endl; // 4になる
std::accumulateでlong longをつかう
std::accumulateの型は第三引数に依存することを利用したもの。
accumulate(v.begin(), v.end(), 0LL); // サフィックスをつける
二重否定
if(flag) {} と同義ではない。条件式がbool値ではなく0か1を返すことを保証する。真偽値をそのまま流用するときなどに使える。
if (!!flag) {} // 条件の返り値が0もしくは1であることが保証される
可変引数テンプレート
テンプレートパラメータ宣言とテンプレートパラメータとの間に省略記号…をつける。
ここで、Argsとargsはパラメータパックと呼ばれ、複数の引数が纏められている状態。これを…により展開することで使用する。
template <class... Args> void f(Args... args); // 0以上の任意の型の引数を取る