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が含まれています.
 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