STL学習ノート1-vector
10276 ワード
C++STL(Standard Template Library)標準テンプレートライブラリは、汎用テンプレートとアルゴリズムのセットです.いくつかの標準的なデータ構造を含む実装は、queues(キュー)、lists(チェーン)、stacks(スタック)などです.STLは、以下の3種類のデータ構造の実現を提供する.
標準容器類:
順序性のある容器
vector
後ろから素早く挿入して削除して、すべての要素に直接アクセスします.
deque
前または後ろから素早く挿入して削除して、直接にすべての要素にアクセスします.
リスト
ダブルチェーンは、どこからでもすばやく挿入し、削除します.
アダプタ
statck
後進先出
queue
新進後出
prorityqueue
最優先要素は常に最初の列になります.
関連コンテナ
セット
クイック検索では、値の重複は許されません.
multiset
クイック検索で、重複値を許可します.
map
ペアのマルチマップ、キーワードに基づいて素早く検索します.重複値は許されません.
multimap
ペアのマルチマップ、キーワードに基づいて素早く検索し、値を繰り返すことができます.
これから具体的に説明します.
1、vector
vector容器は1つの配列に相当しますが、その大きさはあらかじめ指定できず、自動的に拡張され、完全に動的配列と見なされます.vectorを作成すると、メモリに連続的なメモリ空間を割り当ててデータを格納します.初期のサイズは予め設定してもいいし、vectorによってデフォルトで指定してもいいです.メモリを使い終わると自動的にメモリが増えます.そしてこのプロセスは時間がかかります.
まず、vectorはもっと大きなメモリブロックを申請します.
その後、元のデータを新しいメモリブロックにコピーする.
第二に、元のメモリブロック内のオブジェクトを破壊します.
最後に、元のメモリ空間をリリースします.
構造関数
vectorv 1//空のvector vectorv 1(5,42)//5つの値が42の要素を含むVectorを構築しました.
常用関数
at() 指定された位置の要素を返します.
pushback() Vectorの最後に要素を追加します.
size() Vector要素の数の大きさを返します.
コードの例は以下の通りです.この中に必ずヘッダファイルのvectorが含まれています.
end() 最後の要素を返します.
insert() Vectorに要素を挿入します.
iterator insert(iterator loc、const TYPE&val); //指定された位置locの前に値がvalの要素を挿入し、この要素を指すローズマリーを返します.
void insert(iterator loc、sizeypen、const TYPE&val); //指定された位置locの前にnum個の値をvalとする要素を挿入します.
void insert(iterator loc、input Gaterator start、input Gaterator end); //指定された位置locの前に区間[start,end]のすべての要素を挿入します.
erase() 指定要素を削除
iterator erase(iterator loc)//locの要素iterator erase(iterator start,iterator end)//startとendの間の要素を削除します.
標準容器類:
順序性のある容器
vector
後ろから素早く挿入して削除して、すべての要素に直接アクセスします.
deque
前または後ろから素早く挿入して削除して、直接にすべての要素にアクセスします.
リスト
ダブルチェーンは、どこからでもすばやく挿入し、削除します.
アダプタ
statck
後進先出
queue
新進後出
prorityqueue
最優先要素は常に最初の列になります.
関連コンテナ
セット
クイック検索では、値の重複は許されません.
multiset
クイック検索で、重複値を許可します.
map
ペアのマルチマップ、キーワードに基づいて素早く検索します.重複値は許されません.
multimap
ペアのマルチマップ、キーワードに基づいて素早く検索し、値を繰り返すことができます.
これから具体的に説明します.
1、vector
vector容器は1つの配列に相当しますが、その大きさはあらかじめ指定できず、自動的に拡張され、完全に動的配列と見なされます.vectorを作成すると、メモリに連続的なメモリ空間を割り当ててデータを格納します.初期のサイズは予め設定してもいいし、vectorによってデフォルトで指定してもいいです.メモリを使い終わると自動的にメモリが増えます.そしてこのプロセスは時間がかかります.
まず、vectorはもっと大きなメモリブロックを申請します.
その後、元のデータを新しいメモリブロックにコピーする.
第二に、元のメモリブロック内のオブジェクトを破壊します.
最後に、元のメモリ空間をリリースします.
構造関数
vector
常用関数
at() 指定された位置の要素を返します.
pushback() Vectorの最後に要素を追加します.
size() Vector要素の数の大きさを返します.
コードの例は以下の通りです.この中に必ずヘッダファイルのvectorが含まれています.
1 //vector.cpp
2 #include "vector"
3 #include "iostream"
4 using namespace std;
5
6 int main()
7 {
8 vector <int> arr;// int
9 for (int i=0;i<arr.size();i++)//size()
10 {
11 arr.push_back(i);//
12 }
13 for (int i=0;i<10;i++)
14 {
15 cout<<arr.at(i)<<"\t";//
16 }
17 getchar();
18 return 0;
19 }
resize()Vector元素の大きさを変えるvoid resize; //現在のvectorのサイズを変更するのはsizeで、新たに作成された要素に対してvalを割り当てます.arr.resize(20,22);// vector 20, 22
back() 最後の要素を返します.1 cout<<arr.back()<<endl;//
capacity() vectorが格納できる要素の数を返します.(メモリを再割り当てしない場合)cout<<arr.capacity()<<endl;// vector ( )
empty() Vectorが空かどうかを判断します. 1 if(arr.empty())// Vector ( true )
2 {
3 cout<<"vector is empty!";
4 }
5 else
6 cout<<"vector is not empty!";
clear() すべての要素を空にします arr.clear();// ,
maxus ize() Vectorが収容できる要素の最大数(上限)を返します. cout<<"Vector ( ) :"<<arr.max_size()<<endl;//Vector ( )
swap() 二つのVectorを交換して、テストしました.二つの容器の大きさは交換結果に影響がありません. swap(arr,arr2);//
popback() 最後の要素を削除 arr.pop_back();//
front() 最初の要素の参照を返します. cout<<arr.front()<<endl;//front()
ビギン() 最初の要素のディケンサを返します. end() 最後の要素を返します.
insert() Vectorに要素を挿入します.
iterator insert(iterator loc、const TYPE&val); //指定された位置locの前に値がvalの要素を挿入し、この要素を指すローズマリーを返します.
void insert(iterator loc、sizeypen、const TYPE&val); //指定された位置locの前にnum個の値をvalとする要素を挿入します.
void insert(iterator loc、input Gaterator start、input Gaterator end); //指定された位置locの前に区間[start,end]のすべての要素を挿入します.
erase() 指定要素を削除
iterator erase(iterator loc)//locの要素iterator erase(iterator start,iterator end)//startとendの間の要素を削除します.
1 vector <int>::iterator it;//
2 it = arr.begin();//
3 arr.erase(it);//
4 // arr.erase(it,it+4);//
5 for (int i=0;i< arr.size();i++)
6 {
7 cout<<arr.at(i)<<"\t";//
8 }
9 cout<<endl;
10 it = arr.begin();
11 // arr.insert(it,0);// loc val , ,
12 arr.insert(it,3,99); // it 3 99
13 for (int i=0;i< arr.size();i++)
14 {
15 cout<<arr.at(i)<<"\t";//
16 }
レスリング Vectorの最小要素収容数を設定します. arr.reserve(20);// vector size