ひらめの日常

日常のメモをつらつらと

競技プログラミングに便利なCLionの機能

はじめに

僕は競技プログラミングやるときのIDEとしてCLionを使っています.周りにCLionを使っている人が多くないので,今回はCLionってこんなに便利だよ!ということを紹介します.

テンプレート機能

VSCodeにも同様の機能があると聞きます.

SettingsEditorLive Templatesに登録することで,補完が出てくれるようになります.

f:id:thescript1210:20190220081248p:plain
live template

例えば,cmd + j で登録したテンプレート一覧が表示され,union find tree を入力してみます.

他にも,補完時にどの場所にカーソルを入れるかなども指定することができます.

デバッグ

CLionには優秀なデバッグ機能があります.cmd + f8でブレイクポイントを貼り,debugモードで実行すると1ステップごとに処理を追うことができます.この例では配列aが更新されるところにブレイクポイントを貼り(赤丸です),aの中身をみています.

f:id:thescript1210:20190220083836p:plain
debug

ステップ実行や,ステップ実行中に関数が呼び出された場合はその関数の中に入る→出るといったこともできます.lldbを使っているので,コンソールからも似たようなことはできます.

ファイル単位での実行

競プロではmain()を一つの問題ごとに用意し,各ファイルを実行して手元でテストケースを試したい時があるかと思います. こんな感じでたくさんのファイルを一つのプロジェクトに入れると,実行ができません.

f:id:thescript1210:20190220084202p:plain
ファイル構造

そんなときに便利なのがこのプラグインです.実行させたいファイル上で右クリックAdd executable for single c/cpp fileを選択することによって,単一ファイルごとにmain()を実行するとができます.(ターミナルからコンパイルして実行しろというのは正論です.) plugins.jetbrains.com

やっていることは,CMakeListsにexecutableとして登録しているだけなので,手動でもできますがだいぶ楽になります.

ファイルのリフォーマット

速さを意識しすぎてコーディングすると,コードが汚くなりがちですよね??しかしながら,汚いコードは読みにくいのでバグの温床にもなってしまいます.そこで,Reformat Code というコマンドを使いましょう.デフォルトだと cmd+option+Lです.

自分で設定したコーディング規約に基づいてコードをリフォーマットしてくれます.

肝心のコーディング規約をどう設定するかですが,Preferences -> Editor -> Code Styleでインデントの幅からどこで改行するかまで細かく指定することができます.

f:id:thescript1210:20190412004416p:plain
Code Style

最後に

やはり強力な補完や,エラーになりうる箇所を事前に見つけてくれてwarningを出してくれるのはIDEならではの良さがあります.もちろん,他のIDEでもできるでしょうし,他のエディタにはエディタの良さがあると思います.

他にも,debugの時だけフラグを追加して,ローカル環境のみで実行させたい箇所を作るなんてことも可能です. ぜひ自分のお気に入りのCLion環境を作っちゃってください!