C++Primerノートコンテナとアルゴリズム(1)

2076 ワード

C++コンテナとアルゴリズム(1)
 
汎用アルゴリズム:
1.アルゴリズムは異なるコンテナタイプに作用することができる.
2.容器は多種の異なる種類の元素を収容する
 
シーケンスコンテナ:vectorlist deque(全称double-ended queue)
アダプタ:stack queue priority_queue
 
定義:vectorsvere;
 
C c(b,e)が[b,e)が左に開くと右に閉じる間の元素.
C c(n,d)初期化n個d
 
複製構造vectorivec;    vector ivec2(ivec)
 
異なるタイプのコンテナ間のデータを反復器で渡す
 
Vector::iteratormid=svec.begin()+svec.size()/2;
Deque front(svec.begin(),mid);
 
どんなタイプの容器の元素のタイプをすることができます(複製することができて、値を割り当てることができます)//引用は駄目ですIOも駄目です
 
テスト列:
Vector empty;
Vector bad(10);
Vector ok(10,1);
 
ここで、Fooにはデフォルトのコンストラクタはないが、int型パラメトリックコンストラクタがある.
 
class Foo
{
public:
     int data;
     Foo(int a){this->data=a;}
};
 
int main()
{
     //vector<Foo> foo1(10,1);//        foo1   
     //vector<Foo> foo2(10); //             
     //vector<Foo> foo3; //              
     //Foo f();//                        f()      
     Foo f;//              
     //Foo *f=new Foo();//    
     //Foo *f=new Foo;//    
     getchar();
     return 0;
}

 
2 Dネスト
Vector< vector>lines;//>>間には必ずスペースを入れなければなりません.そうしないと>>シフト演算子として扱われます.
 
反復と反復の範囲
 
Vectorとdeque反復器はiter+n iter-n
Listはランダムアクセスできない、比較<>などできない
 
反復範囲
Endは最後の要素の次の位置を指す
[begin,end)
 
Size_type iterator const_iterator
 
c.begin()c.end()c.rbegin()反転c.rend()
 
c.push_back(x)  c.insert(p,t) c.push_front(x)(listとdequeのみ)c.insert(p,n,t)
 
更新後の注意反復器のリセット
While(first!=v.end())
{
     First=v.insert(++first,42);
++first;
}
 
c.resize(n,t)をnに調整し、tで足りないものを補う
 
list::referencelast=*list.begin();
lastを参照
 
c[n]c.at(n)は使用可能(vectordeque)
 
c.pop_back()コンテナcの最後の要素を削除
c.pop_front()はlist dequeにのみ適用されます
P286