std::array
std::array<T,n>は,T型のn個の固定長配列を表す型らしい.std::vector<T>と違い,固定長なので,push_back()などの操作はできない…と思う.これは,#include <array>すると使えるようになる.
std::iota
std::iota(a.begin(), a.end(), i)は,vectorとかlistとかarrayなどのコレクションのbegin()からend()までを,iから始まる値で埋めていく関数…だと思う.順に,i, i+1, i+2, …と値が入る.これは#include <numeric>をいれると使えるようになる.
使用例
コードは以下のとおり.GCCでコンパイルする場合は,オプションで,-std=c++0xが必要.
#include <array> #include <numeric> #include <iostream> #include <algorithm> void disp(int x){ std::cout << x << std::endl; } int main(){ std::array<int,5> a={1,1,1,1,1}; std::for_each(a.begin(),a.end(),disp); std::iota(a.begin(),a.end(),10); std::for_each(a.begin(),a.end(),disp); return 0; }
std::array<int, 5>型の変数aの各要素をstd::for_each(これは#include <algorithm>で使える)を使ってvoid disp(int x)という関数に渡して順に表示している.そのあと,std::iotaを使って値を10,11,…に変更.最後にその結果を表示している.この出力結果は
1 1 1 1 1 10 11 12 13 14
のようになる.