記事ディレクトリ
ベクトルとは何ですか
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 にとって最大の悪夢