「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)

関連項目