競技プログラミング用 知識集積所

cin

最終更新:

sport_programming

- view
管理者のみ編集可

雑な説明

標準入力(キーボードとか)から入力された情報を1つ受け取り、変数に代入する。
「1つ」とは、空白または改行まで。

正式にはstd::cinであるが、例の一行を書いておけばcinだけ書けばよい。

基本的な記述

数値型

int x;
cin >> x;

文字型

char c;
cin >> c;

文字列型

string s;
cin >> s;

動的配列

n要素のvector(未作成)<int>型の場合。
int n;
cin >> n;

vector<int> a(n);
for (int i=0; i<n; i++) {
  cin >> a.at(i);
}

二次元配列(B問題レベル)

大きさh×wのvector(未作成)<vector<int>>型の場合。
int h, w;
cin >> h >> w;

vector<vector<int>> a(h,vector<int>(w));
for (int i=0; i<h; i++) {
  for (int j=0; j<w; j++) {
    cin >> a.at(i).at(j);
  }
}

発展的な記述

いくつもまとめて受け取る

int型2つとstring型1つの場合。
int x, y;
string s;
cin >> x >> y >> s;

動的配列を並列で受け取る(B問題レベル)

n要素のvector<int>を2つで、その配列2つの入力が
A1,B1,
A2,B2,
A3,B3,
……
となっている場合。
int n;
cin >> n;

vector<int> a(n), b(n);
for (int i=0; i<n; i++) {
  cin >> a.at(i) >> b.at(i);
}

注意点

cinする個数を間違えないようにする

cinが実行されると、まず受け取り待ち状態になる。
入力が2つしかないのに3回cinすると、3回目の入力待ちで永久に停止状態になってしまう。
ウィキ募集バナー