「std::vector::at」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == std::vector::at は、指定された要素の参照を返します。値を代入したり、参照でき...」)
 
 
(同じ利用者による、間の1版が非表示)
行1: 行1:
<!--
+
[[std::vector]]の要素にアクセスするのに at が利用できます。'''at'''は、境界チェックをしてくれるので、コンテナに安全にアクセスできます。
vim: filetype=mediawiki
+
 
-->
+
'''読み方'''
 +
;[[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

関連項目