C++ の STL コンテナ ベクトル

ベクトルとは何ですか

Vector: データ構造内のシーケンス テーブルであり、コンテンツを保存するための連続スペースを開きます。

ベクトルと通常の配列リストの違い

1. C++ で記述されているため、 テンプレートが含まれており、 タイプをカスタマイズできます。 組み込み型だけでなく、 も同様です。
2. 交換関数を提供します
3. Auto は C++11 で導入され、トラバーサルに range を使用できます
......

ベクトルのメンバー関数

演算子=

代入演算
ここに画像の説明を挿入します
1 つのバージョンのみがオーバーロードされているため
ベクトル型 = ベクトル型
である場合 他の型は暗黙的に変換されます

オペレーター[]

[]: 下付き検索

#include"vector.h"
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	//arr.resize(2);
	arr.reserve(100);
	cout << arr[1]<< endl;
	return 0;
}


開始と終了とイテレータ

iterator: イテレータ、ベクトルはテンプレート ポインタ
begin:point を使用して定義されます。 >最初の要素
終了: 最後の要素
使用法:

#include <iostream>
#include <vector>

int main ()
{
    
    
  std::vector<int> myvector;
  for (int i=1; i<=5; i++) myvector.push_back(i);

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

サイズ()

size(): 有効長を計算します
使用法:

#include"vector.h"
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	cout << arr.size() << endl;
	return 0;
}


容量

容量: 現在のシーケンス テーブルで容量を確認します。

#include"vector.h"
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	cout << arr.capacity() << endl;
	return 0;
}


サイズ変更

resize: 容量を設定します
サイズ
サイズがサイズ間の場合() と Capacity() を指定すると、データを削除せずに容量が減ります。
サイズ変更>capacity() を指定すると、容量が拡張されます
ここに画像の説明を挿入します

空の

シーケンステーブルに内容があるか確認する

#include <iostream>
#include <vector>

int main ()
{
    
    
  std::vector<int> myvector;
  int sum (0);

  for (int i=1;i<=10;i++) myvector.push_back(i);

  while (!myvector.empty())
  {
    
    
     sum += myvector.back();
     myvector.pop_back();
  }

  std::cout << "total: " << sum << '\n';

  return 0;
}

予約する

リザーブ: 拡張
ここに画像の説明を挿入します

プッシュバック

テールプラグ

#include"vector.h"
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	//arr.resize(2);
	arr.reserve(100);
	cout << arr[1]<< endl;
	return 0;
}


ポップバック

末尾削除

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	//arr.resize(2);
	//arr.reserve(100);
	cout << arr.size()<< endl;
	return 0;
}


入れる

指定された位置に挿入
型の固定を避けるためにイテレータ パラメータをオーバーロードするため、1 つ以上を挿入できます

つまり、渡されるのはイテレータです

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.insert(arr.begin()+2, 30);
	//arr.resize(2);
	//arr.reserve(100);
	cout << arr.size()<< endl;
	return 0;
}


消す

指定された位置のコンテンツを削除します
オーバーロードはイテレータでもある
ので、イテレータを渡す必要があります

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.insert(arr.begin()+2, 30);
	arr.erase(arr.begin() + 2);
	//arr.resize(2);
	//arr.reserve(100);
	cout << arr.size()<< endl;
	return 0;
}


スワップ

交換、すべてをベクター型オブジェクトで交換

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	vector<int> s;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.pop_back();
	arr.insert(arr.begin()+2, 30);
	arr.erase(arr.begin() + 2);
	//arr.resize(2);
	//arr.reserve(100);
	s.swap(arr);
	cout << arr.size()<< endl;
	cout << s.size() << endl;
	return 0;
}

クリア

文字列の内容をクリアする

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;



int main()
{
    
    
	//dabai::test1();
	vector<int> arr;
	vector<int> s;
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.push_back(11);
	arr.pop_back();
	arr.insert(arr.begin()+2, 30);
	arr.erase(arr.begin() + 2);
	//arr.resize(2);
	//arr.reserve(100);
	s.swap(arr);
	cout << arr.size()<< endl;
	cout << s.size() << endl;
	s.clear();
	cout << s.size() << endl;
	return 0;
}

メンバー変数

これらはすべてイテレータです。これは私が自分で書きました
は正式な名前ではありません

	iterator _str;//首个元素的地址
	iterator _size;//尾元素的地址
	iterator _capacity;//容量

要約する

は通常のシーケンス リストとはまだ異なり、全体的にははるかに使いやすくなっています。
DP にとって最大の悪夢

おすすめ

転載: blog.csdn.net/dabai__a/article/details/134901856