C++プログラミング->array(配列)
2570 ワード
Arrayは固定サイズのシーケンスコンテナです.一定数の要素を持ち、厳密な線形シーケンスに整理されています.
内部の配列コンテナには、テンプレートパラメータのサイズであっても、独自の配列要素以外のデータは保存されません.
通常の配列がストレージスペースサイズ[]を宣言する方法と同様に有効です.
Arrayクラスは、標準コンテナのように使用できるように、グローバル関数を追加しただけです.
他の標準コンテナとは異なり、Arrayのサイズは決定され、割り当てられた演算子によって要素が管理されません.Arraysは、サイズを決定する要素配列をカプセル化した集約タイプです.従って、Arraysは動的に拡大または縮小することはできない(類似のvector容器を参照すれば、その大きさは拡大可能である).
ゼロサイズのArraysは有効ですが、メンバー関数front、back、dataで間接的に参照することはできません.
他の標準ライブラリのコンテナ操作とは異なり、2つの配列コンテナを交換することは、1回の操作で範囲内のすべての要素を個別に含む交換操作であり、通常はかなり有効な操作である.言い換えれば、要素の反復器は、2つの配列コンテナの元の関連付けを保持することができる.
もう1つの唯一の特性はArrayコンテナがtupleクラスとして処理できることであり、ヘッダファイルにget関数アクセス配列の要素が再ロードされている場合、tupleおよび専用tuple_sizeとtuple_elementタイプ.下にコードを貼ります.vectorと似ています.違いは上にも言いました.コードは以下の通りです.
出力は以下の通り:34 23 45 12 22 56 34 34 23 45 12 22 34 34 23 45 12 22 56 34 23 45 12 22 22 56 22 45 23 34 23 45 12 22 56 22 45 23 34 34 34 34 23 45 12 22 56 34 34 23 45 22 56 34 size is:6 max size is:6
内部の配列コンテナには、テンプレートパラメータのサイズであっても、独自の配列要素以外のデータは保存されません.
通常の配列がストレージスペースサイズ[]を宣言する方法と同様に有効です.
Arrayクラスは、標準コンテナのように使用できるように、グローバル関数を追加しただけです.
他の標準コンテナとは異なり、Arrayのサイズは決定され、割り当てられた演算子によって要素が管理されません.Arraysは、サイズを決定する要素配列をカプセル化した集約タイプです.従って、Arraysは動的に拡大または縮小することはできない(類似のvector容器を参照すれば、その大きさは拡大可能である).
ゼロサイズのArraysは有効ですが、メンバー関数front、back、dataで間接的に参照することはできません.
他の標準ライブラリのコンテナ操作とは異なり、2つの配列コンテナを交換することは、1回の操作で範囲内のすべての要素を個別に含む交換操作であり、通常はかなり有効な操作である.言い換えれば、要素の反復器は、2つの配列コンテナの元の関連付けを保持することができる.
もう1つの唯一の特性はArrayコンテナがtupleクラスとして処理できることであり、ヘッダファイル
//
array<float,6>array1={34,23,45,12,22,56};
// ( )
for (auto iterator1=array1.begin();iterator1!=array1.end();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
//
for ( float& x : array1 ) std::cout <<x << ' ';
cout<<endl;
//
for (int i=0;i<6;i++)
{
cout<<array1.at(i)<<' ';
}
cout<<endl;
//
for (int i=0;i<6;i++)
{
cout<<array1[i]<<' ';
}
cout<<endl;
//
for (auto iterator1=array1.rbegin();iterator1!=array1.rend();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
// const
for (auto iterator1=array1.cbegin();iterator1!=array1.cend();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
// const
for (auto iterator1=array1.crbegin();iterator1!=array1.crend();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
//array data
const array<float,6>array3={34,23,45,12,22,56};
array<float,6>array2;
memcpy(array2.data(),array3.data(),24);
for (auto iterator2=array2.begin();iterator2!=array2.end();++iterator2)
{
cout<<*iterator2<<' ';
}
cout<<endl;
cout<<array1.front()<<endl; //
cout<<array1.back()<<endl; //
cout<<"size is :"<<array1.size()<<endl; //
cout<<"max size is:"<<array1.max_size()<<endl;
cout<<endl;
出力は以下の通り:34 23 45 12 22 56 34 34 23 45 12 22 34 34 23 45 12 22 56 34 23 45 12 22 22 56 22 45 23 34 23 45 12 22 56 22 45 23 34 34 34 34 23 45 12 22 56 34 34 23 45 22 56 34 size is:6 max size is:6