C++11:配列の代わりにstd::arrayを使用する

2755 ワード

C++11後、標準ライブラリはより近代的な配列std::array,cppreferenceを導入した.comでは、次のように紹介されています.
       <array>
template< 
    class T, 
    std::size_t N 
> struct array;
(C++11  )

std::array             。


          ,           C      T[N]             
    。    C     ,         T* 。      ,       , 
     N       T      : std::array<int, 3> a = {1,2,3}; 
        C                   ,       、    、     。
std::array      (Container)       (ReversibleContainer)    , 
       array     ,          ,        
(ContiguousContainer)      (C++17  )         
(SequenceContainer)    。

        array ( N == 0 )。    , array.begin() == array.end() ,
        。    array     front()   back()         。

array        N          。

簡単に言えばstd::arrayは、従来の配列がランダムアクセスをサポートし、効率が高く、ストレージサイズが固定されているなどの特徴に加え、反復器アクセス、容量取得、元のポインタの取得などの高度な機能をサポートしています.また、ポインタT*に劣化して開発者を困惑させることはありません.
std::arrayを使用すると、初期化、修正、遍歴をより簡単に行うことができます.ここで例を示します.
std::array<int, 10> arr = {1,2,3,4,5,6,7,8,9,0};
std::for_each(arr.begin(), arr.end(), [](int &i){i++;});
for(auto i : arr){std::cout << i << " ";}