1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【C++】標準入力まとめ【競プロ】

Last updated at Posted at 2023-01-08

個人的な学習メモ用として標準入力に関するパターンを適宜追記していきます。
扱いやすさの観点から配列に関しては基本的にvectorを使う方針でいきます。

Pattern1 : 1行目に行数のN,以降が数値N行

例)
3
1
2
3

■適宜読み取って処理をしたいとき

#include <iostream>
using namespace std;
int main(void){
    int N;
    cin >> N;
    int a;
    for(int i=0; i<N; i++){
        cin >> a;
    }
    return 0;
}

■1次元配列aに格納したいとき

#include <bits/stdc++.h>
using namespace std;
int main(void){
    int N;
    cin >> N;
    vector <int> a(N);
    for(int i=0; i<N; i++) cin >> a[i];
    return 0;
}

Pattern2 : 1行目に行数H(高さ)と1行ごとの数値の数W(幅)が与えられるパターン

Excelチックなマス目上の題材のときに頻出
例)
3 5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

■2次元配列aに格納したいとき

#include <bits/stdc++.h>
using namespace std;
int main(void){
    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[i][j];
    }
    return 0;
}

2重ループの読み取り処理の書き方は見づらいけどこっちでもいいかも

for(int i=0; i<H; i++)for(int j=0; j<W; j++)cin>>a[i][j];

標準出力に配列の中身を出力したいときは以下

for(int i=0; i<H; i++)for(int j=0; j<W; j++) cout << a[i][j] << endl;

Pattern3 : 1行目に行数のH,以降が文字列H行で1文字ずつ区切って2次元配列に格納したいとき

※各行(W)の文字数は同じである場合に限る
※文字数固定のため使用箇所は限定的で汎用性低
4 3
abc
def
ghi
jkm

■2次元配列aに格納したいとき

#include <iostream>
#include<string>
using namespace std;
int main(void){
    int H, W;
    cin>>H>>W;
    string str_line[H];
    string a[H][W];

    for(int i=0; i<H; i++)cin>>str_line[i];
    for(int i=0; i<H; i++){
        for(int j=0; j<W; j++)a[i][j] = str_line[i][j];
    }
    return 0;
}

→解いたときにこんな感じでやったけどもっと汎用性高くできる気がします

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?