重温《STLソース解析》ノート第四章
3682 ワード
原文のリンク:http://www.cnblogs.com/xxiaoye/p/3953082.html
ソースの前に、秘密はありません。 ——侯傑
シリアルコンテナ関連容器
array(build in)RB-tree
vector set
heap map
pristy-queue multiset
list multimap
slist hashtable
deque hash。セット
スタック(アダプタ)hashumap
queue(アダプター)hashumultiset
hash。multimap
第四章:シリアルコンテナ
C++言語自体はシリアル型の容器arrayを提供しています。
array:静的空間を割り当てて、一度構成したら変えられません。
vector:
ダイナミックスペースを割り当てる。連続的な線形空間を維持するために、ディエテンダーのタイプは、Random Access Iteratorsです。
空間配置typedef simple_alloc data_allocator
動的に空間サイズを増加するということは、元の空間の後に新しい空間を接続するのではなく、元の大きさの2倍の大きさで別のブロックを配置するのが大きいです。
のスペースをコピーして、元のコンテンツをコピーして、元のコンテンツの後に新しい要素を構築し、元のスペースを解放します。したがって、
vectorのどの操作に対しても、一旦空間再配置を引き起こしたら、元のvectorに向けたすべてのサブジェネレータは無効になります。
これはプログラマが犯しやすい間違いです。
利用可能な方法または関数:begin、end、size、capacity、empy、front、back、find、erase、clear、insert、
pushback,pop_back
list:非連続空間
void list::unique()->同じ値の連続要素を除去します。注意は「連続」です。
リストの方法と関数:begin、end、empty、size、front、back、 find、insert、erase、clear、remove、
pushfront,push_back,pop_front,pop_back,unique,[sort,splice,merge,reverse-]transfer
deque:双方向開口の連続的な線形空間、ローズマリータイプRandom Access Iteratorですが、ローズマリーは非常に複雑です。
アドレスのキューを維持します。
vectorとの違い:
一つは、dequeが常に時間内に先頭を挿入または削除することができることである。
第二に、dequeには容量という観念がなく、動的にセグメント化された連続空間を組み合わせて、いつでも新しい空間を増やすことができる。
空間とリンクします。
dequeの最大任務は,これらのセグメントの定量的連続空間において,その全体的に連続した仮想画像を維持し,ランダムアクセスのインターフェースを提供することである。
再配置、複製、放出を避けた輪廻は、複雑なローズマリーアーキテクチャである。
dequeの方法と関数:
begin、end、empty、size、front、back、find、insert、erase、clear、push front、pusuback、
popufront、popuback、 reversexupuback(size-type,nodeautudd=1)
reverseupufront(sizautype、nodeautudd=1)
スタック:ありません。
方法または関数:empty,size,top,push,pop スタック
queue:empty,size,front,back,push,pop queue>iqueue
heap:prinrity queueを演じるアシスタントはbinary max heapを使います。
方法または関数:pusshap、popuheap、sortuheap、make ap
priority uqueue:empty,size,top,push,pop
slist:一方向チェーン
方法または関数:size、begin、end、find、insert
転載先:https://www.cnblogs.com/xxiaoye/p/3953082.html
ソースの前に、秘密はありません。 ——侯傑
シリアルコンテナ関連容器
array(build in)RB-tree
vector set
heap map
pristy-queue multiset
list multimap
slist hashtable
deque hash。セット
スタック(アダプタ)hashumap
queue(アダプター)hashumultiset
hash。multimap
第四章:シリアルコンテナ
C++言語自体はシリアル型の容器arrayを提供しています。
array:静的空間を割り当てて、一度構成したら変えられません。
vector:
ダイナミックスペースを割り当てる。連続的な線形空間を維持するために、ディエテンダーのタイプは、Random Access Iteratorsです。
空間配置typedef simple_alloc data_allocator
動的に空間サイズを増加するということは、元の空間の後に新しい空間を接続するのではなく、元の大きさの2倍の大きさで別のブロックを配置するのが大きいです。
のスペースをコピーして、元のコンテンツをコピーして、元のコンテンツの後に新しい要素を構築し、元のスペースを解放します。したがって、
vectorのどの操作に対しても、一旦空間再配置を引き起こしたら、元のvectorに向けたすべてのサブジェネレータは無効になります。
これはプログラマが犯しやすい間違いです。
利用可能な方法または関数:begin、end、size、capacity、empy、front、back、find、erase、clear、insert、
pushback,pop_back
list:非連続空間
// , , ,
protected:
//
link_type get_node() {
return list_node_allocator::allocate();
}
//
void put_node(link_type) {
list_node_allocator::deallocate(p);
}
// ( ) ,
link_type create_node(const T& x) {
link_type p = get_node();
construct(&p->data,x); // , /
return p;
}
// ( )
void destroy_node(link_type p) {
destroy(&->data);
put_node(p);
}
remove(constT&value)>>値をvaluesとするすべての要素を削除します。void list::unique()->同じ値の連続要素を除去します。注意は「連続」です。
リストの方法と関数:begin、end、empty、size、front、back、 find、insert、erase、clear、remove、
pushfront,push_back,pop_front,pop_back,unique,[sort,splice,merge,reverse-]transfer
deque:双方向開口の連続的な線形空間、ローズマリータイプRandom Access Iteratorですが、ローズマリーは非常に複雑です。
アドレスのキューを維持します。
vectorとの違い:
一つは、dequeが常に時間内に先頭を挿入または削除することができることである。
第二に、dequeには容量という観念がなく、動的にセグメント化された連続空間を組み合わせて、いつでも新しい空間を増やすことができる。
空間とリンクします。
dequeの最大任務は,これらのセグメントの定量的連続空間において,その全体的に連続した仮想画像を維持し,ランダムアクセスのインターフェースを提供することである。
再配置、複製、放出を避けた輪廻は、複雑なローズマリーアーキテクチャである。
dequeの方法と関数:
begin、end、empty、size、front、back、find、insert、erase、clear、push front、pusuback、
popufront、popuback、 reversexupuback(size-type,nodeautudd=1)
reverseupufront(sizautype、nodeautudd=1)
スタック:ありません。
方法または関数:empty,size,top,push,pop スタック
queue:empty,size,front,back,push,pop queue>iqueue
heap:prinrity queueを演じるアシスタントはbinary max heapを使います。
方法または関数:pusshap、popuheap、sortuheap、make ap
priority uqueue:empty,size,top,push,pop
slist:一方向チェーン
方法または関数:size、begin、end、find、insert
転載先:https://www.cnblogs.com/xxiaoye/p/3953082.html