「std::vector::at」の版間の差分
提供: C++入門
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == std::vector::at は、指定された要素の参照を返します。値を代入したり、参照でき...」) |
|||
(同じ利用者による、間の1版が非表示) | |||
行1: | 行1: | ||
− | + | [[std::vector]]の要素にアクセスするのに at が利用できます。'''at'''は、境界チェックをしてくれるので、コンテナに安全にアクセスできます。 | |
− | + | ||
− | + | '''読み方''' | |
+ | ;[[std::vector::at]]:えすてぃーでぃー べくたー あっと | ||
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | |||
[[std::vector::at]] は、指定された要素の参照を返します。値を代入したり、参照できます。 | [[std::vector::at]] は、指定された要素の参照を返します。値を代入したり、参照できます。 | ||
行17: | 行17: | ||
cout << v[100000000000000] << endl;; | cout << v[100000000000000] << endl;; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== std::vector::atの使用例 == | == std::vector::atの使用例 == | ||
− | |||
=== ソースコード vector_at_1.cpp === | === ソースコード vector_at_1.cpp === | ||
− | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
行46: | 行43: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== コンパイル === | === コンパイル === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
g++ vector_at_1.cpp -o vector_at_1 | g++ vector_at_1.cpp -o vector_at_1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== 実行例 === | === 実行例 === | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
% ./vector_at_1 | % ./vector_at_1 | ||
行60: | 行53: | ||
Out of Range: vector::_M_range_check | Out of Range: vector::_M_range_check | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | |||
* [[std::vector]] | * [[std::vector]] | ||
* [[std::out_of_range]] | * [[std::out_of_range]] | ||
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2016年1月10日 (日) 20:33時点における最新版
std::vectorの要素にアクセスするのに at が利用できます。atは、境界チェックをしてくれるので、コンテナに安全にアクセスできます。
読み方
- std::vector::at
- えすてぃーでぃー べくたー あっと
概要
std::vector::at は、指定された要素の参照を返します。値を代入したり、参照できます。
std::vector::at は、境界チェックをしてくれます。 境界を超える場合には、std::out_of_range を送出します。
operator[] の場合では、境界チェックがないため、以下のケースで Bus error になります。
std::vector v(3,1); cout << v[100000000000000] << endl;;
std::vector::atの使用例
ソースコード vector_at_1.cpp
#include <iostream> #include <vector> #include <stdexcept> using namespace std; int main(int argc, char const* argv[]) { vector<int> v(3, 100); try { v.at(1) = 20; // 代入できる cout << v[1] << endl; // 代入したものを確認する cout << v.at(10) << endl;; // out_of_range } catch (std::out_of_range& ex) { cerr << "Out of Range: " << ex.what () << endl; } return 0; }
コンパイル
g++ vector_at_1.cpp -o vector_at_1
実行例
% ./vector_at_1 20 Out of Range: vector::_M_range_check