「std::array::at」の版間の差分
提供: C++入門
(ページの作成:「std::array::at とは、std::arrayの要素にアクセスするためのメンバ関数です。境界チェックを行ってくれます。 '''読み方''' ...」) |
(相違点なし)
|
2013年12月29日 (日) 01:35時点における最新版
std::array::at とは、std::arrayの要素にアクセスするためのメンバ関数です。境界チェックを行ってくれます。
読み方
- std::array::at
- えすてぃーでぃー あれい あっと
概要
std::arrayの要素にアクセスする方法として、std::array::operator[]とstd::array::atがあります。 []でアクセスする場合、境界チェックが行われません。安全に要素にアクセスするには、std::array::atが良いでしょう。
array2.cpp の例
ソースコード array2.cpp
atを使って、代入や参照を行う例です。 at(300)は、300番目の要素にアクセスするという意味ですが、配列サイズは、もともと3となっているため例外が送出されます。
#include <iostream> #include <array> using namespace std; int main(int argc, char const* argv[]) { array<int, 3> a1 {1,2,3}; try { a1[100] = 255; // no exception... cout << a1.at(0) << endl; a1.at(0) = 100; cout << a1.at(0) << endl; cout << a1[0] << endl; a1.at(300); // throw exception } catch (out_of_range& e) { cerr << e.what() << endl; } return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 array2.cpp -o array2
実行例
% ./array2 1 100 100 array::at: __n (which is 300) >= _Nm (which is 3)