b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

C++ Deque容器的使用方法

电脑杂谈  发布时间:2019-07-25 21:05:29  来源:网络整理

deque_c++ deque_deque java

在处理一些数组的事情,所以随手保留一下Deque容器的使用方法

可以认为arraylist或者vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。2、向容器添加/删除元素可能会导致所有指向容器的迭代器、引用和指针失效。 向量 vector 特点 一个可以扩展的动态数组 随机访问、在尾部插入或删除元素快 在中间或头部插入或删除元素慢 向量的容量 容量 capacity :实际分配空间的大小 s.capacity :返回当前容量 s.reserve n :若容量小于n,则对s进行扩展,使其容量至少为n * 顺序容器 双端队列 deque 特点 在两端插入或删除元素快 在中间插入或删除元素慢 随机访问较快,但比向量容器慢 * 顺序容器 列表 list 特点 在任意位置插入和删除元素都很快 不支持随机访问 接合 splice 操作 s1.splice p, s2, q1, q2 :将s2中[q1, q2 移动到s1中p所指向元素之前 * 顺序容器 顺序容器的插入迭代器 插入迭代器 用于向容器头部、尾部或中间指定位置插入元素的迭代器 包括前插迭代器(front_inserter)、后插迭代器(back_insrter)和任意位置插入迭代器(inserter) 例: list s。

包括的头文件为:

#include <deque>

using namespace std;

声明一个deque时,一般需要前缀std::c++ deque,如std::deque<int>c;

因为类型deque是一个定义在namespace std内的template 。

构造函数:

deque java_c++ deque_deque

deque<Elem> c ;//产生一个空的deque,其中没有任何元素

deque(小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector快)快速的访问随机的元素,快速的在开始和末尾插入元素c++ deque,随机的插入,删除元素要慢,空间的重新分配要比vector快,重新分配空间后,原有的元素不需要拷贝。bool remove(int &elem)//移除一个元素,被移除的元素赋给elem。 、 、 、 、 begin 、end :获得容器首、尾迭代器 clear :将容器清空 empty :判断容器是否为空 size :得到容器元素个数 s1.swap s2 :将s1和s2两容器内容交换 相关数据类型(s表示容器类型) s::iterator:指向容器元素的迭代器类型 s::const_iterator:常迭代器类型 容 器 可逆容器、随机访问容器 可逆容器 s::reverse_iterator:逆向迭代器类型 s::const_reverse_iterator:逆向常迭代器类型 rbegin :指向容器尾的逆向迭代器 rend :指向容器首的逆向迭代器 随机访问容器 s[n]:获得容器s的第n个元素 * 容 器 * 顺序容器 顺序容器的接口 赋值 assign 插入函数 insert, push_front(只对list和deque), push_back 删除函数 erase,clear,pop_front(只对list和deque) ,pop_back 其他顺序容器访问函数 front,back 改变大小 resize 顺序容器 例10-4 * 顺序容器 //包含的头文件略去…… template void printcontainer const char* msg, const t& s cout msg ": "。

deque<Elem> c(n) ;//产生一个大小为n的deque

deque<Elem> c(n , elem) ;//产生一个大小为n的deque,

//每个元素值都是elem。

dequer<Elem> c(begin,end); //产生一个deque,以区间[begin ; end]

//做为元素初值

析构函数:

deque_c++ deque_deque java

c.~ deque<Elem>() ;销毁所有元素,并释放内存。

非变动性操作

c.size(); //返回当前的元素数量

c.empty(); //判断大小是否为零。等同于c.size() == 0,但可能更快

c.max_size(); //可容纳元素的最大数量

c.at(idx) ; //返回索引为idx所标示的元素。如果idx越界,抛出out_of_range

c[idx] ; //返回索引idx所标示的元素。不进行范围检查

c.front() ; //返回第一个元素,不检查元素是否存在

deque java_c++ deque_deque

c.back(); //返回最后一个元素

c.begin(); //返回一个随机迭代器,指向第一个元素

c.end(); //返回一个随机迭代器,指向最后元素的下一位置

变动性操作:

c1 = c2; //将c2的所有元素赋值给c1;

c.assign(n , elem); //将n个elem副本赋值给c

c.assing(beg , end); //将区间[beg;end]中的元素赋值给c;

c.push_back(elem); //在尾部添加元素elem

deque_c++ deque_deque java

c.pop_back() ; //移除最后一个元素(但不回传)

c.push_front() ; //在头部添加元素elem

c.pop_front() ; //移除头部一个元素(但不回传)

c.erase(pos) ; //移除pos位置上的元素,返回一元素位置

//如 c.erase( c.begin() + 5)//移除第五个元素

c.insert(pos , elem); //在pos位置插入一个元素elem,并返回新元素的位置

c.insert(pos , n , elem); //在pos位置插入n个元素elem,无返回值

c.insert(pos , beg , end);

c.resize(num); //将容器大小改为num。可更大或更小。

c.resize(num , elem);//将容器大小改为num,新增元素都为 elem

c.clear(); //移除所有元素,将容器清空

PS:Deque和Vector是智能容器,删除或者增加元素时,其他位置与元素会进行相应的移动。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-115751-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...