C++ 標準テンプレート ライブラリ (STL) のベクトルと例

C++ ベクトルとは何ですか?

A C++ ベクトル は、自動的にサイズを変更できる動的配列です。 サイズ変更は、要素がベクターに追加または削除された後に行われます。 ストレージはコンテナーによって自動的に処理されます。 ベクトルの要素は、連続したストレージに格納されます。 これにより、C++ プログラマはイテレータを使用してベクトル要素にアクセスし、走査できるようになります。

ベクトルへの新しいデータの挿入は、その最後に行われます。 これには時間がかかります。 ベクトルからの要素の削除には一定の時間がかかります。 その理由は、ベクトルのサイズを変更する必要がないためです。 ベクトルの先頭での要素の挿入または削除には線形時間がかかります。

ベクターをいつ使用するか?

C++ ベクトルは次のように使用する必要があります。wing 状況:

  • 一貫して変化するデータ要素を扱う場合。
  • 開始する前にデータのサイズが不明な場合、ベクターではコンテナーの最大サイズを設定する必要はありません。

C++ でベクトルを初期化する方法

ベクトルの構文 C + + 次のとおりです。

vector <data-type> name (items)
  • 上に示したように、ベクトル キーワードから始めます。
  • data-type は、ベクトルに格納される要素のデータ型です。
  • 名前は、ベクトルまたはデータ要素の名前です。
  • 項目は、ベクトルのデータの要素の数を示します。 このパラメータはオプションです。

イテレータ

イテレータの目的は、ベクトルに格納されている要素にアクセスできるようにすることです。 ポインタのように機能するオブジェクトです。 C++ ベクトルでサポートされる一般的なイテレータは次のとおりです。

  • ベクトル::begin(): ベクトルの最初の要素を指す反復子を与えます。
  • ベクトル::end(): これは、ベクトルの最後の要素を指す反復子を与えます。
  • ベクトル::cbegin(): これは Vector::begin() と同じですが、要素を変更する機能はありません。
  • ベクトル::cend(): これは、vector::end() と同じですが、ベクトル要素を変更できません。

修飾子

修飾子は、指定されたデータ型の意味を変更するために使用されます。 C++ の一般的な修飾子は次のとおりです。

  • ベクトル::push_back(): このモディファイアは要素を後ろから押します。
  • ベクトル::挿入(): ベクターの指定された位置に新しい項目を挿入します。
  • ベクトル::ポップバック(): このモディファイアは、後ろからベクトル要素を削除します。
  • ベクトル::消去(): これは、指定された場所から要素の範囲を削除するために使用されます。
  • ベクトル::クリア(): すべてのベクトル要素が削除されます。

#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;
}

出力:

修飾子

コードのスクリーンショットは次のとおりです。

修飾子

コードの説明:

  1. iostream ヘッダー ファイルをコードに含めます。 これにより、コンソールからの読み取りとコンソールへの書き込みが可能になります。
  2. コードにベクター ヘッダー ファイルを含めます。 これにより、C++ でベクトルを操作できるようになります。
  3. std 名前空間を含めると、呼び出さずにそのクラスと関数を使用できます。
  4. main() 関数を呼び出し、その中にプログラムのロジックを追加します。
  5. { は、main() 関数の本体の開始を示します。
  6. 一連の整数を格納するために、nums という名前のベクトルを宣言します。
  7. ベクトルの反復処理に役立つ for ループを作成します。 この変数は、ベクトル要素を 1 から反復するのに役立ちます。st 5へth 要素。
  8. 要素を後ろからベクトル num にプッシュします。 反復ごとに、変数 a の現在の値 (1 ~ 5) がベクトルに追加されます。
  9. コンソールにテキストを出力する
  10. 反復子変数 a を使用して、ベクトル nums の要素を先頭から最後の要素まで反復します。 Vector::begin() および Vector::end() イテレータを使用していることに注意してください。
  11. 反復子変数 an が指す値を反復ごとにコンソールに出力します。
  12. コンソールにテキストを出力します。 \n は改行文字で、カーソルを新しい行に移動してそこから印刷します。
  13. 反復変数を使用して、ベクトル nums の要素を先頭から最後の要素まで反復処理します。 Vector::cbegin() および Vector::cend() イテレータを使用していることに注意してください。
  14. 反復子変数 a が指す値を反復ごとにコンソールに出力します。
  15. プログラムが正常に実行された場合、main 関数は値を返す必要があります。
  16. main() 関数の本体の終わり。

#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();			
}

出力:

修飾子

コードのスクリーンショットは次のとおりです。

修飾子

コードの説明:

  1. その関数を使用するには、コードに iostream ヘッダー ファイルを含めます。
  2. ベクター ヘッダー ファイルをコードに含めて、そのファイルを使用します。 機能.
  3. std 名前空間を含めると、呼び出さずにそのクラスを使用できます。
  4. main() 関数を呼び出します。 プログラム ロジックは本体内に追加する必要があります。
  5. main() 関数の本体の開始。
  6. いくつかの整数値を格納するために、nums という名前のベクトルを宣言します。
  7. ベクトル nums に 5 つの要素を格納します。 それぞれの値は 1 です。
  8. コンソールにテキストを出力する
  9. 反復変数 a を使用して、ベクトル nums の要素を反復処理します。
  10. 反復ごとにベクトル num の値をコンソールに出力します。
  11. 値 2 をベクトル nums の末尾に追加します。
  12. ベクトル nums のサイズを格納する整数変数 n を宣言します。
  13. ベクトル nums の最後の値を他のテキストと並べて出力します。 2 が返されるはずです。
  14. ベクトル nums から最後の要素を削除します。 2は削除されます。
  15. コンソールにテキストを出力します。 \n はカーソルを新しい行に移動し、そこにテキストを印刷します。
  16. 反復変数 a を使用して、ベクトル nums の要素を反復処理します。
  17. 反復ごとにベクトル num の値をコンソールに出力します。
  18. 値 7 をベクトル nums の先頭に挿入します。
  19. ベクトル nums の最初の値を他のテキストと並べて出力します。 7 が返されるはずです。
  20. ベクトル nums からすべての要素を削除します。
  21. すべての内容をクリアした後、ベクトル num のサイズを他のテキストと並べて出力します。 0 が返されるはずです。
  22. main() 関数の本体の終わり。

容量

以下を使用してくださいwing ベクトルの容量を決定する関数:

  • サイズ() -ベクトル内の項目の数を返します。
  • Max_size() - ベクターが保存できる最大のアイテム数を返します。
  • 容量 () -それ ベクトルに割り当てられた記憶領域の量を返します。
  • サイズ変更 () –それ n 個の項目が含まれるようにコンテナのサイズを変更します。 ベクトルの現在のサイズが n より大きい場合、後ろの項目はベクトルから削除されます。 ベクトルの現在のサイズが n より小さい場合、余分な項目がベクトルの後ろに追加されます。
  • 空 () –it はベクトルが空の場合に true を返します。 それ以外の場合は false を返します。

#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;
}

出力:

容量

コードのスクリーンショットは次のとおりです。

容量

コードの説明:

  1. その機能を使用するには、コードに iostream ヘッダー ファイルを含めます。
  2. その関数を使用するには、コードにベクター ヘッダー ファイルを含めます。
  3. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  4. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  5. 整数を格納するために、vector1 という名前のベクトルを作成します。
  6. for ループを使用して、1 ~ 10 の値を持つ変数 x を作成します。
  7. 変数 x の値をベクトルにプッシュします。
  8. ベクトルのサイズを他のテキストと一緒にコンソールに表示します。
  9. ベクトルの容量を他のテキストと一緒にコンソールに表示します。
  10. ベクトルがコンソール上の他のテキストと一緒に保持できる項目の最大数を出力します。
  11. 5 つの要素だけを保持できるようにベクトルのサイズを変更します。
  12. ベクトルの新しいサイズを他のテキストと並べて印刷します。
  13. ベクトルが空でないかどうかを確認します。
  14. ベクトルが空でない場合は、コンソールにテキストを出力します。
  15. else ステートメントを使用して、ベクトルが空の場合に何を行うかを指定します。
  16. ベクトルが空の場合にコンソールに印刷するテキスト。
  17. プログラムは正常に完了すると値を返す必要があります。
  18. main() 関数本体の終わり。

まとめ

  • C++ ベクトルは、要素が追加または削除されたときに自動的にサイズを変更できる動的配列です。
  • ベクターのストレージはコンテナーによって自動的に処理されます。
  • ベクトルの要素は、アクセスできるように連続したストレージに格納され、反復子を使用して走査されます。
  • ベクトルへの新しいデータの挿入は、その最後に行われます。
  • ベクトルへのデータの挿入には差分時間がかかります。
  • ベクトルからの要素の削除には一定の時間がかかります。
  • 先頭への要素の挿入または削除には直線的な時間がかかります。
  • 一貫して変化するデータ要素を扱う場合は、ベクトルを使用する必要があります。
  • また、開始前にデータのサイズが不明な場合は、ベクトルを使用できます。