本文へスキップ
BecomeCoder

C++のエラー · エラー10

out_of_range ― vector::at() の範囲外アクセス(実行時)

v[i] と違い v.at(i) は境界チェックをするため、範囲外だと例外を投げて安全に停止します。

出るコード

#include <vector>
int main() {
    std::vector<int> v = {1, 2, 3};
    return v.at(10);   // 範囲外
}

エラーメッセージ

terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check: __n (which is 10) >= this->size() (which is 3)

直し方

v.size() で長さを確認してからアクセスするか、trycatch (const std::out_of_range&) で例外を捕まえて処理します。