C++ 標準テンプレート ライブラリ (STL) のベクトルと例
C++ ベクトルとは?
C++ ベクトル 自動的にサイズを変更できる動的配列です。サイズ変更は、要素がベクターに追加または削除された後に発生します。ストレージはコンテナーによって自動的に処理されます。ベクトルの要素は、連続したストレージに格納されます。これにより、C++ プログラマーは反復子を使用してベクトル要素にアクセスし、トラバースできます。
ベクターへの新しいデータの挿入は、その最後で行われます。これには時間がかかります。ベクトルから要素を削除するには、一定の時間がかかります。その理由は、ベクトルのサイズを変更する必要がないからです。ベクターの先頭での要素の挿入または削除には、直線的な時間がかかります。
この C++ チュートリアルでは、次のことを学びます:
- C++ ベクトルとは?
- ベクトルを使用する場合
- C++ でベクトルを初期化する方法
- イテレータ
- 修飾語
- 例 1
- 例 2
- 容量
- 例 3
ベクトルを使用する場合
C++ ベクトルは、次の状況で使用する必要があります:
- 常に変化するデータ要素を扱う場合
- 開始前にデータのサイズがわからない場合、ベクターではコンテナーの最大サイズを設定する必要はありません。
C++ でベクトルを初期化する方法
C++ でのベクトルの構文は次のとおりです:
vector <data-type> name (items)
- 上に示したように、vector キーワードから始めます。
- データ型は、ベクターに格納される要素のデータ型です。
- 名前は、ベクターまたはデータ要素の名前です。
- 項目は、ベクターのデータの要素数を示します。このパラメータはオプションです。
イテレータ
イテレータの目的は、ベクトルに格納されている要素にアクセスできるようにすることです。ポインターのように機能するオブジェクトです。 C++ ベクトルでサポートされている一般的な反復子は次のとおりです:
- vector::begin(): ベクトルの最初の要素を指すイテレータを提供します。
- vector::end(): ベクトルの末尾要素を指すイテレータを提供します。
- vector::cbegin(): vector::begin() と同じですが、要素を変更する機能はありません。
- vector::cend(): vector::end() と同じですが、ベクター要素を変更できません。
修飾子
修飾子は、指定されたデータ型の意味を変更するために使用されます。 C++ の一般的な修飾子は次のとおりです:
- vector::push_back(): この修飾子は要素を後ろから押し出します。
- vector::insert(): ベクターの指定された位置に新しいアイテムを挿入します。
- vector::pop_back(): この修飾子は、後ろからベクター要素を削除します。
- vector::erase(): 指定された場所から要素の範囲を削除するために使用されます。
- vector::clear(): すべてのベクター要素を削除します。
例 1
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; for (int a = 1; a <= 5; a++) nums.push_back(a); cout << "Output from begin and end: "; for (auto a = nums.begin(); a != nums.end(); ++a) cout << *a << " "; cout << "\nOutput from cbegin and cend: "; for (auto a = nums.cbegin(); a != nums.cend(); ++a) cout << *a << " "; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>例 2
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; nums.assign(5, 1); cout << "Vector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.push_back(2); int n = nums.size(); cout << "\nLast element: " << nums[n - 1]; nums.pop_back(); cout << "\nVector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.insert(nums.begin(), 7); cout << "\nFirst element: " << nums[0]; nums.clear(); cout << "\nSize after clear(): " << nums.size(); }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>容量
次の関数を使用して、ベクトルの容量を決定します:
- サイズ() – ベクター内の項目数を返します。
- Max_size() -ベクターが格納できるアイテムの最大数を返します。
- 容量 () – それ ベクトルに割り当てられたストレージ容量を返します。
- () のサイズ変更 - それ コンテナのサイズを変更して n 個のアイテムを格納します。ベクトルの現在のサイズが n より大きい場合、バック アイテムはベクトルから削除されます。ベクトルの現在のサイズが n より小さい場合、余分なアイテムがベクトルの後ろに追加されます。
- 空 () –i ベクトルが空の場合、t は true を返します。それ以外の場合は false を返します。
例 3
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; for (int x = 1; x <= 10; x++) vector1.push_back(x); cout << "Vector size: " << vector1.size()<< endl; cout << "Vector capacity: " << vector1.capacity() << endl; cout << "Maximum size of vector: " << vector1.max_size()<< endl; vector1.resize(5); cout << "Vector size after resizing: " << vector1.size() << endl; if (vector1.empty() == false) cout << "Vector is not empty"<<endl; else cout << "Vector is empty"<<endl; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>まとめ:
- C++ ベクトルは、要素が追加または削除されたときに自動的にサイズを変更できる動的配列です。
- ベクターのストレージはコンテナによって自動的に処理されます。
- ベクトルの要素は、イテレータを使用してアクセスし、トラバースできるように、連続したストレージに格納されます。
- ベクターへの新しいデータの挿入は、その最後で行われます。
- ベクトルへのデータの挿入には時間がかかります。
- ベクトルから要素を削除するには、一定の時間がかかります。
- 最初の要素の挿入または削除には直線的な時間がかかります。
- 一貫して変化するデータ要素を扱う場合は、ベクトルを使用する必要があります。
- 開始前にデータのサイズがわからない場合は、ベクトルを使用することもできます。
C言語