「std::out of range」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::out_of_range とは、例外クラスの1つです。out_of_rangeは、範囲外を参照したときに送出します。 '''読み方''' ;std::out_of_rang...」)
(相違点なし)

2016年1月10日 (日) 20:33時点における版

std::out_of_range とは、例外クラスの1つです。out_of_rangeは、範囲外を参照したときに送出します。

読み方

std::out_of_range
えすてぃーでぃー あうと おぶ れんじ

概要

たとえば、配列が10個のサイズのときに、11番目にアクセスをしたら、一般的には境界エラーになります。配列の領域外にアクセスするとプログラムは、データ破壊がおきたり、プログラムが停止してしまうなどの問題がおきます。

C++ では、コンテナにアクセスするときに、境界のチェックを行い、範囲外へのアクセスは、 out_of_range を送出するといった実装になっています。

ここでは、out_of_range を送出する例を紹介します。

out_of_range.cpp の例

std::vecorでの例になります。はじめの初期化で、要素は10個用意します。at() で、100個にアクセスすると、例外が送出される例になります。

ソースコード out_of_range.cpp

/*
 * out_of_range.cpp
 * Copyright (C) 2016 kaoru <kaoru@localhost>
 */
 
#include <iostream>
#include <stdexcept>
#include <vector>
 
int main(int argc, char const* argv[])
{
        std::vector<int> v(10);
        try {
                v.at(100) = 100;
        } catch (std::out_of_range& oor) {
                std::cerr << "Out of Range: " << oor.what() << std::endl;
        }
        return 0;
}

コンパイル

c++  out_of_range.cpp -o out_of_range

実行例

% ./out_of_range
Out of Range: vector

関連項目