perogram

【C++】vectorの扱い。初期化時にサイズ指定とアクセスにv.at(i)を使おう

サイズ指定

    vector<ll> x, y;
    x.reserve(N);
    y.reserve(N);

これは、こう書くべき。

vector<ll> x(N);
vector<ll> y(N);

アクセス

  • vectorを宣言してpush_backをしていない状態で配列演算子で値を入れるというミスをした
  • 以下のように
    FOR(i, 0, N){
        ll v;
        cin >> v;
        x[i] = v;
        y[i] = v;
    }
  • 配列からvectorに書き換えたときに起こりそうなミスである
  • これは以下のように書くべき

アクセス関数 at

    FOR(i, 0, N){
        cin >> x.at(i);
        y.at(i) = x.at(i);
    }
  • これならpush_backしていないけれど値は入る
  • 正しく動くことを確認した

参考 atの方が安全

qiita.com