C,C++

Last-modified: 2012-04-06 (金) 03:14:26

実行速度が速いなどの利点があり、競技プログラミングでは最も良く使われている言語です。

 

導入方法

C/C++では、人間の書いたプログラム(ソースコード)を事前に機械語に変換して、コンピュータが実行できるようにする必要があり、これを行うソフトをコンパイラと言います。

主要なコンパイラには

  • GCC
  • Microsoft Visual C++

などがあります。

多くのオンラインジャッジやプログラミングコンテストでは、ジャッジ側は提出したソースコードの正誤判定にGCCを使っているので、ここではOSごとのGCCの導入方法を説明します。

Windows

WindowsでGCCを利用するには、MinGWを使う方法とCygwinを使う方法があります。

Mac OS X

Mac OS XでGCCを使う早道はXcodeをインストールする事です。
XcodeはSnow LeopardまではOSのインストールディスクの中に入っていますし、またApp Storeで「Xcode」と検索してもインストールする事ができます。

 

CとC++

「C++って難しそう」と言ってC++を敬遠してしまう人も多いですが、
競技プログラミングで使う分には、Cを書けるようになったら、C++に移行するのは簡単です。

C++のメリット

  • STLという優秀なライブラリが使える
    平衡二分木、順位付きqueue、二分探索などの、競技プログラミングにおいて頻繁に利用されるデータ構造、アルゴリズムが、既にSTLの中で実装されているので、自分で実装する手間が大幅に減ります。
    このサイトなどを参考にすると良いでしょう。
  • オブジェクト指向に対応している
    競技プログラミングをする上では、別に使わなくても問題はないので、オブジェクト指向を知らないからと言って敬遠する必要はないです。
  • 後述する、関数冒頭以外での型宣言など、Cでは使えない便利な機能がある

Cのメリット

  • 場合によっては、C++よりも若干実行速度が速くなる事がある
  • ショートコーディングに向いている

CからC++へ

C++は以下の3点ほどを押さえれば、Cと同じような感覚で使うことが出来ます。

  • STLライブラリを使うためには(とりあえず)プログラム冒頭に「using namespace std;」を書き、利用したい機能の入っているヘッダをインクルードする
    例えばalgorithmヘッダーなら、#include<algorithm>のようにする
  • Cにおいて~.hという名前で使えていたヘッダーは末尾の.hがとれて頭にcがつき、c~になる
    (例: #include<stdio.h> → #include<cstdio>)
  • 「for(int i = 0; i < 10; i++)」のように、型宣言を関数の冒頭以外でする事ができる

サンプルコード

nを入力で受け取り、1からnまでの数字を表示します。(C++)

#include
using namespace std;

int main(){
  int n;
  scanf("%d",&n);
  for(int i = 1; i <= n; i++) printf("%d\n",i);
  return 0;
}

リンク

STL