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型パラメトリックコンストラクタがある.
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
汎用アルゴリズム:
1.アルゴリズムは異なるコンテナタイプに作用することができる.
2.容器は多種の異なる種類の元素を収容する
シーケンスコンテナ:vectorlist deque(全称double-ended queue)
アダプタ:stack queue priority_queue
定義:vector
C c(b,e)が[b,e)が左に開くと右に閉じる間の元素.
C c(n,d)初期化n個d
複製構造vector
異なるタイプのコンテナ間のデータを反復器で渡す
Vector
Deque
どんなタイプの容器の元素のタイプをすることができます(複製することができて、値を割り当てることができます)//引用は駄目ですIOも駄目です
テスト列:
Vector
Vector
Vector
ここで、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
反復と反復の範囲
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
lastを参照
c[n]c.at(n)は使用可能(vectordeque)
c.pop_back()コンテナcの最後の要素を削除
c.pop_front()はlist dequeにのみ適用されます
P286