import std;
全てをimportしてくれる魔法の呪文。
競プロだと、1つ1つimportするのが面倒でこれで済ませがち。
ただ、コードの可読性の面で微妙な上に、どのパッケージで定義されているかを意識せずに使えるせいで、細かい仕様を調べるときに苦労していて良くない。
また、std.uni.toUpper と std.ascii.toUpper が衝突するという実害もある。
あの関数はどこで定義されているのか
std.stdio
競プロには欠かせない標準入出力系のライブラリ。
readln, readf, writeln, writefなど。
std.conv
型を変換してくれるすごい奴。
to!。
std.string
文字列に関するいろんな処理。
標準入力を受け取った後の、chompとかsplit、配列を出力する際のjoinと入出力で大活躍する。
他にもreplaceやtoLower, toUpperが使える。知らんかった。
以上で挙げた関数の多くはstd.arrayやstd.uniからimportしてるものらしい。
std.algorithm
読んで字の如くアルゴリズム系。毎回algorithmのスペルが不安になるけど、コイツがいなければ制限時間内に解答の提出はままならない。
sort(sort!), map!, filter!, each!, reduce!, minElement/maxElement, sum, uniqなど、探せば探すほどよく使う関数が出てくる。
std.range
emptyとかfront/back, popFront/popBack みたいなRangeをRangeたらしめる関数が定義されている。
特定の性質を持つRangeを生成する関数であるrepeatやiotaもよく使う。
std.container
この間紹介したRedBlackTree はここ。
その他はynary heapなど、データを収める構造が定義されているから深掘りすればおもしろいかも。
結論
こう。
import std.stdio, std.conv, std.string, std.algorithm, std.range;
参考