Container以及Sequence

Container以及Sequence

所谓Container是一种object,能够存储其他的objects作为元素,并拥有访问元素的方法。每个container model 都具有一个相关的iterator,最一般化的container concept,它只要求其相关的iterator必须是input iterator的一个model,所以,我们不应该对container的iterators做出比input iterator还多的假设。


所谓Forward Container是一种Container, 其元素依据明确的次序规则来排列。这个次序规则不会在迭代过程中自行改变。它所提供的iterators满足Forward Iterator的需求条件。因此Forward Container支持multipass算法,并允许同一个container同时拥有多个有效的iterators。

所谓Reversible Container是一种Forward Container,而且其iterator是一种Bidirectional iterator。它拥有额外的一些member functions 和嵌套型别,不但可以向前遍历,也可以回头遍历。

所谓Random Access Container是一种Reversible Container,而且其iterator type是一种Random Access Iterator。它提供operator [] member function访问其元素。

===============================================
所谓Sequence是一种可变大小的Container, 其元素是以strict liner order加以排列。它导入许多新的member functions,用以安插或删除任意位置上的单个或某区间的元素。STL Container如vector、deque、list 、slist都是Sequence。他们的主要区别在于vector 、deque提供Random Access Iterators,list提供Bidirectional iterators, slist提供Forward iterators。


所谓Front Insertion Sequence是一种Sequence,可以在amortized constant time内将元素安插与起始点或是取得起始位置的元素,front() 成员方法以及push_front()、pop_front() 要比begin()、insert()、erase()更具有效率,但功能上基本相同,在STL Container中list、slist和deque都是Front Insertion Sequence的model,vector不是,vector拥有front(),但不具有pop_front() 和push_front()方法。


所谓Back Insertion Sequence与Front Insertion Sequence类似,他可以在amortized constant time内将元素安插与尾端,或取出最后元素。back()    push_back() pop_back()成员方法 。STL Containers中vector 、list、deque 都是Back Insertion Sequence的model 。slist就不是,slist拥有back,但不具备push_back 和 pop_back,它是单向连接链表,访问其最后元素不是constant time行为。

你可能感兴趣的:(Container以及Sequence)