「std::out of range」の版間の差分
提供: C++入門
(ページの作成:「std::out_of_range とは、例外クラスの1つです。out_of_rangeは、範囲外を参照したときに送出します。 '''読み方''' ;std::out_of_rang...」) |
(→out_of_range.cpp の例) |
||
行12: | 行12: | ||
ここでは、out_of_range を送出する例を紹介します。 | ここでは、out_of_range を送出する例を紹介します。 | ||
== out_of_range.cpp の例 == | == out_of_range.cpp の例 == | ||
− | [[std:: | + | [[std::vector]]での例になります。はじめの初期化で、要素は10個用意します。at() で、100個にアクセスすると、例外が送出される例になります。 |
=== ソースコード out_of_range.cpp === | === ソースコード out_of_range.cpp === | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
行44: | 行44: | ||
Out of Range: vector | Out of Range: vector | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
== 関連項目 == | == 関連項目 == | ||
* [[メインページ]] | * [[メインページ]] | ||
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
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::vectorでの例になります。はじめの初期化で、要素は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