c++顺序容器

        顺序容器是将单一类型元素聚集在一起,并根据位置来存储和访问这些元素的一种容器,该容器中的元素排列顺序与元素值无关,而是由元素添加到容器里的次序决定。标准库定义了三种顺序容器类型:vector、list和deque。在使用顺序容器前,我们需要包含下列三种头文件之一:#include <vector>、#include <list>和#include <deque>。

        容器元素的初始化:

                                                C<T> c;

                                                C c(c2);                                 //将一个元素初始化另一个元素的副本,要求:c和

                                                                                               c2必须具有相同的容器类型,并存放相同类型的

                                                                                               元素。

                                                C  c(b, e);                             //初始化一段元素的副本,b,e也可以是指针

                                                C c(n, t);                               //分配指定数目的元素

                                                C c(n);

        容器内元素的类型约束:

                                                元素类型必须支持赋值运算;

                                                元素类型的对象必须可以复制;

        容器定义的类型别名:

                                                size_type、iterator、const_iterator(只能用于读取,不能改变其值)、

                                                reverse_iterator、const_reverse_iterator、difference_type、

                                                value_type(元素类型)、reference(元素的左值类型)、

                                                const_reference

        迭代器:

                常用迭代器运算:*iter(返回左值)、iter->mem、++iter、iter++、--iter、iter--、iter1 == iter2、

                                             iter1 != iter2

                vector和deque类型迭代器支持的操作:iter + n、iter - n、 iter1 - iter2、>、>=、<、<=

                顺序迭代器与逆序迭代器:c.begin()、c.end()、c.rbegin()、c.rend();

        访问容器中的元素:

                                                c.back();                                          //返回元素的引用即:reference类型,等于

                                                                                                          *--c.end();

                                                c.front();                                          //*c.begin();

                                                c[n]、c.at(n);                                   //只是用与deque和vector,抛出

                                                                                                         out_of_range异常,

                                                                                                         不能用于添加元素

        在顺序容器中添加元素:

                                                c.push_back(t);                               //在容器尾部添加一个元素,所有顺序容器都

                                                                                                          支持该操作

                                                c.push_front(t);                                //只适合list和deque,返回值为void类型

                                                c.insert(p, t);                                    //在指定位置添加元素

                                                c.insert(p, n, t);                                //在指定位置添加n个相同的元素

                                                c.insert(p, b, e);                               //在指定位置(p所指元素的前面)插入一段

                                                                                                          元素

                                                c.insert(c.begin(), t);                        //vector在头插入元素的方法

        删除容器中的元素: 

                                                在删除元素前,必须在容器中查找要删除的元素,才能用erase操作,查找元素的

                                                最简单方法为:find操作,头文件为:algorithm,list<T>::iterator iter =

                                                find(c.begin(), c.end(), searchValue);

                                                c.erase(p);                                      //返回一个迭代器,指向后面的元素

                                                c.erase(b, e);

                                                c.clear();

                                                c.pop_back();

                                                c.pop_front();                                  //只适用于list和deque

        赋值操作:

                                               c1 = c2;                                             //删除容器中c1的所有元素,然后将c2复制给

                                                                                                          c1         

                                               c1.swap(c2);

                                               c.assign(b, e);                                   //重新设置c中的元素,b和e必须不是指向c中

                                                                                                          元素的

                                                                                                          迭代器

                                               c.assign(n, t);

        容器大小的操作:

                                                c.size();

                                                c.max_size();

                                                c.empty();

                                                c.resize(n);                                        //如果n < c.size();则删除多余的元素,

                                                                                                           否则添加。

                                                c.resize(n, t);

        vector容器的自增长:       reserve(n)、capacity();

        容器的选用:

                                               vector                                               //要求随机访问元素

                                               deque                                               //要求随机访问元素并在容器的首部或尾部插

                                                                                                         入或删除元素

                                               list                                                     //在中间插入或删除元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值