std::arrayとstd::iota

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

のようになる.

コメントする