顺序容器vector、list、deque(整理中)

vector: 向量容器,使用线性存储结构,

list: 双向链表容器,
deque: 双端队列容器,

1.对容器vector,list,deque进行自增操作是需要注意的问题:
    list,deque可以直接对begin(),end()进行++或者--操作,但是vector不行;

int a[ ] = {1,2,3,4,5};
vector<int> ivec(a,a+5);

cout << *(ivec.begin()++) << endl; //错误:ivec.begin()++,++ivec.begin(),

                                                             //iivec.end()--,--ivec.end()操作都不正确


list<int> lis(a,a+5);

cout << *(++lis.begin()) << endl;  //上述操作都可以


deque<int> ide;
for(int i=0; i!=5;++i)
de.push_back(a[i]);

cout << ide.front() << '\t' << *++ide.begin() << endl;
cout << ide.back () << '\t' << *--ide.end()<< endl;    //上述操作都可以


2. vector ,list ,deque初始化时,type<T>  c(b,e),创建容器c,其元素是迭代器b和e标示的范围内元素的副本。

      指针不是迭代器,所以会出现上述对list和vector可以用数组初始化,相当于运用指针;但是对deque不行。


3.往容器中添加元素的操作:c.push_back(t), c.push_front(t)  ,c.insert(p,t) , c.insert(p, n ,t), c.insert(p,b,e)

   // t 为元素,p,b,e为迭代器,n表示个数,

     其中 c.push_front(t)只适用于list和deque.(这两种都是双向容器)


5.访问顺序容器内的元素的操作:c.back() , c.front() , c[n] , c.at(n);  

    其中 c[n] , c.at(n)只适用于vector和deque


6.删除顺序容器内元素的操作:c.erase(p), c.erase(b,e), c.clear() ,  c.pop_back() (删除最后一个元素), c.pop_front()(删除第一个元素)

  其中c.pop_front() 只适用于list 或 deque 容器。

   注意:c.erase(b,e),此处删除的是从迭代器b开始 到 迭代器e-1的元素


注意:c.erase(p)返回的迭代器是指向删除元素后边的元素,所以在应用时一定要注意,下方程序为删除vector<int> iVec

中的偶数,没有红色部分的操作则很可能会报错

for ( iterV = iVec.begin();iterV != iVec.end();++iterV )
if ( *iterV%2==0 )
{
iterV = iVec.erase(iterV);
if ( iterV != iVec.begin() )
--iterV;
else
continue;

}


7.关于迭代器运算

例如type<int>::iterator iter = velue.begin(),//iter表示迭代器

*iter; iter->men; ++iter;--iter; iter++;iter--;iter1 == iter2;iter1 != iter2; 这些操作对于vector,list,deque都可以

注意:vector 和deque容器的迭代器提供的额外运算,以下操作不可用于list

      iter+n; iter-n;

      iter 1+= iter2;iter1 -= iter2;iter1-iter2;

      iter1 > iter2;  iter1 < iter2;  iter1 >= iter2;  iter1 >= iter2; 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值