トップページに戻る
次のC++のサンプルへ
前のC++のサンプルへ
2-4 TR1のstd::arrayのサンプル
C++のサンプル
VC++2008のSP1から使用可能な、std::arrayのサンプルです。
ソース
#include <stdio.h>
#include <array>
#include <vector>
typedef std::array<int,3> ArrayDef;
void OtherFunc(std::array<int,3> pIntArr);
void main()
{
//std::vector<ArrayDef> TestVect; typedefした型を使ってもOK
std::vector<std::array<int,3> > TestVect;
std::array<int,3> wkIntArr;
for(int I=0;I<=5;I++){
for(int J=0;J<=(int)wkIntArr.size()-1;J++){
wkIntArr[J]=I;
}
TestVect.push_back(wkIntArr);
}
for(int I=0;I<=(int)TestVect.size()-1;I++){
for(int J=0;J<=(int)TestVect[I].size()-1;J++){
//atメソッドで値にアクセス可
printf("TestVect[%d].at(%d)=%d\n",I,J,TestVect[I].at(J));
}
}
OtherFunc(wkIntArr); //関数に渡しても配列のサイズが取得可能
std::array<int,2> TestFillArr;
TestFillArr.fill(999); //fillメソッドで配列の初期化可能
for(std::array<int,2>::iterator it = TestFillArr.begin();it != TestFillArr.end();it++){
static int rn=0;
printf("%d番目は%d\n",++rn,*it);
}
}
void OtherFunc(std::array<int,3> pIntArr)
{
printf("pIntArr.size()=%d\n",pIntArr.size());
}
実行結果
TestVect[0].at(0)=0
TestVect[0].at(1)=0
TestVect[0].at(2)=0
TestVect[1].at(0)=1
TestVect[1].at(1)=1
TestVect[1].at(2)=1
TestVect[2].at(0)=2
TestVect[2].at(1)=2
TestVect[2].at(2)=2
TestVect[3].at(0)=3
TestVect[3].at(1)=3
TestVect[3].at(2)=3
TestVect[4].at(0)=4
TestVect[4].at(1)=4
TestVect[4].at(2)=4
TestVect[5].at(0)=5
TestVect[5].at(1)=5
TestVect[5].at(2)=5
pIntArr.size()=3
1番目は999
2番目は999
解説
ビルトイン配列とValArrayとstd::array
は、使い分けるといいかもしれません。