C++ のベクトル (vector )
C++ の動的配列の 1 つは、 vector (vector) です。
ベクター (vector ) —これは、すでに動的配列のモデルとなっているデータ構造です。
C++ の通常の配列には、それを操作するための特別な関数やメソッドはありません。C++ のベクトルは、要素を操作するための追加関数を含むデータ構造です。
ベクターの作成
#include <ベクトル>
...
int main()
{
// 10 要素の整数ベクトル v の宣言
ベクトル ; v(10);
// 初期値ゼロでも同様(ベクターv1)
ベクトル ; v1(10, 0);
...
プレ>
ベクトルパディング
方法 1
n 番目の要素にメモリを割り当て、キーボードから読み取って要素を埋めます。
intn;
シン>> n;
ベクトル a(n);
for (int i = 0; i < n; i++)
シン>> a[i];
方法 2
2 番目の方法は、要素の数が不明な場合に必要になります。まず、空のベクターが作成され、次に push_back() メソッドを使用して、新しい要素がベクターの末尾に追加されます。
intn;
シン>> n;
ベクトルa;
for (int i = 0; i < n; i++) {
intb;
シン>> b;
a.push_back(b);
}
プレ>
ベクトルサイズ
int b = a.size();
プレ>
|
イテレータ
コンテナ(データ構造)内の要素を反復処理する 1 つの方法は、 イテレータ( イテレータ code>), これにはいくつかの種類があります。
反復子 - «が示すデータ構造» ;一部のコンテナ要素で、(一部のコンテナでは) 前/次の要素に移動できます。
ベクトルは最も強力な - random-access iterator(random-access Iterator ) を使用します。ランダム アクセス イテレータは、順次移動に加えて、ベクトルの任意の要素にアクセスできます。
イテレータの利点
1) 要素を削除し、インデックス ([] ) を使用して要素を反復する場合、ベクトルを超えないように、残りの要素の数を常に追跡する必要があり、反復子を使用すると、ベクトルの終わりを示す end()< /code> を使用できます。
2) イテレータを使用すると、ベクター内の要素を動的に削除および挿入することが簡単にできます。
イテレータ宣言
1) 整数ベクトルの反復子を宣言し、それをベクトルの 最初の 要素にポイントします。
ベクトル ; myvector = { 1, 2, 3, 4, 5 };
vector <int>::iterator it = myvector.begin();
プレ>
2) 整数ベクトルのイテレータを宣言し、ベクトル内の最後の の後の要素を指すようにします。
ベクトル ; myvector = { 1, 2, 3, 4, 5 };
vector <int>::iterator it = myvector.end(); // 最後の要素の後の要素を指し、
vector <int>::iterator it1 = myvector.end() - 1 ; // 最後の要素を指しています。
値の取得と表示
イテレータが指す要素を取得して表示します。
cout << *それ;
イテレータの位置を移動
イテレータの位置を 3 つ前に移動します。
<プレ>
前進(それ、3); プレ>
既存の反復子から新しい反復子を作成する
既存の反復子に基づいて新しい反復子を作成し、3 桁進めます。
auto it1 = next(それ, 3);
イテレータを使用したベクトル値の表示
vector<int>::イテレータ it;
for (それ = myvector.begin(); それ != myvector.end(); ++it) {
cout<<*it<<" ";
}
プレ>
ベクトル トラバーサル
最後の要素から最初の要素までベクトルをたどるには、逆反復子 reverse_iterator が使用されます。これは次のように取得されます:
1) rbegin() - ベクトルの最後の要素を指す逆反復子を返し、++ 操作を適用すると、前の要素に遷移します。
2) rend() - ベクトルの前の要素を指す逆反復子を返します。++ 操作を適用すると、遷移が発生します 次へ。
vector<int>::reverse_iterator it = myvector.rbegin(); // 最後の要素を指す
vector<int>::reverse_iterator it = myvector.rend(); // 要素を指し、
// 最初のものの前に来て、
プレ>
|