競技プログラミング用 知識集積所
cin
最終更新:
sport_programming
-
view
雑な説明
標準入力(キーボードとか)から入力された情報を1つ受け取り、変数に代入する。
「1つ」とは、空白または改行まで。
「1つ」とは、空白または改行まで。
正式にはstd::cinであるが、例の一行を書いておけばcinだけ書けばよい。
基本的な記述
数値型
int x; cin >> x;
文字型
char型(未作成)の場合。
char c; cin >> c;
文字列型
string型(未作成)の場合。
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,
……
となっている場合。
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回目の入力待ちで永久に停止状態になってしまう。
入力が2つしかないのに3回cinすると、3回目の入力待ちで永久に停止状態になってしまう。