LoginSignup
12

More than 3 years have passed since last update.

Xcodeで競プロを始めました(C++)

Last updated at Posted at 2019-04-21

概要

結論;macOSにXcodeをインストールすれば簡単にC++で競プロを始められます!

面接体験記を見ていると、出されたロジックをホワイトボードにコーディングしてみろ、と言われるそうで。自分の身にいつ降り掛かってもいいように対策しようと思いました。
しかし現在やっているiOSの本を使ってもMVCの構造やライブラリの使い方が主で、例えばソートや探索木とかは一生触らないだろうなあと。
どうしたらいいかとふと思い調べてみると、どうやら競技プログラミングを触ってみるのが良いようで。教科書と違い実践的であるのが良い、身につくまでできる気がする。
サイトは日本語情報が多そうなATCoderを選択。挫折しないことがまずは大事。

言語はC++を選択

使う言語は触ったことは無いがC++を選択。
これは競プロ回答の6割以上がC++のため、回答を参考しやすいだろうという理由。
またC++だとXcodeがあれば済むというのが大きい。(新しいIDEを用意するのも億劫ですし…)

言語はとりあえず使ってみて分からないときに初めて調べる「遅延評価勉強法」でやってみる。
Cと同じ感覚で使えるので、何かしら1言語やってたら学習コストは低いように思う。(今の所ですが)

エディタはXcodeを使用

XCodeは簡単にBreakPointを貼れるので、デバッグしながら変数の値を確認できるのは嬉しいです。

参考

1.2.2 Xcodeのインストールと簡単な使い方 ((C++からのプログラミング入門

XcodeとC++で競技プログラミングするときの初期設定の一例

ATCoder用の設定

Command Line Toolを選択
-w735
言語に「C++」を選択。
-w740
main.cppと同じ場所にinput.txtを作成。
-w471
input.txtをプロジェクトへ追加する。
-w280
こうするとinput.txtをXcodeから直接編集できるのでテストデータの入力が楽。
-w719
input.txtをコードから読み込めるように設定を行う。
Edit Schemeを選択
-w402
下記を先程のinput.txtが格納されているディレクトリを指定する。
-w896
動作確認のコード。提出時は//input from txtを含めて下3行を削除するだけ。

使い回す用のコード

  • コード部分だけに集中できるように、他の部分は何かしらで登録しておくと良いと思う。
  • 私は下記をDashのスニペットに登録して使用している
  • ライブラリも必要に応じて追加する必要はありそう
//  main.cpp
//  CppTest

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, const char * argv[]) {

    // input from txt (提出時にこの箇所は削除すること)
    std::ifstream in("input.txt");
    std::cin.rdbuf(in.rdbuf());

    // cinを高速にするためのおまじない
    cin.tie(0);
    ios::sync_with_stdio(false);

    /////////////////////
    // Write code below /
    /////////////////////


    return 0;
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12