当前位置: 首页 > news >正文

中山移动网站建设公司申请网址的网站

中山移动网站建设公司,申请网址的网站,怎么样才能把网站关键词做有排名,有没有99块钱做网站文章索引 前言1. list的介绍2 list的使用2.1 list的构造函数2.2 iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers 3. list的迭代器失效4. list与vector的对比总结 前言 本篇我们旨在探讨对于STL中list的使用, 下一篇我们将会对list进行底层剖析以及… 文章索引 前言1. list的介绍2 list的使用2.1 list的构造函数2.2 iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers 3. list的迭代器失效4. list与vector的对比总结 前言 本篇我们旨在探讨对于STL中list的使用, 下一篇我们将会对list进行底层剖析以及模拟实现, list是C标准模板库中的一种容器, 它是一个双向循环链表, 能够在任意位置进行插入和删除操作. 博客主页 酷酷学!!! 点击关注, 共同进步!!! 正文开始 1. list的介绍 list为STL中的一个类模板, 第一个模板参数是存储的数据类型, 第二个参数为一个内存池, 用作内存管理, 后续的篇章我也会带大家认识, 目前仅需了解即可. list的文档介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器, 并且该容器可以前后双向迭代.list的底层是双向链表结构, 双向链表中每个元素存储在互不相关的独立结点中, 在结点中通过指针指向其前一个元素和后一个元素.list与forword_list非常相似: 最重要的不同在于forward_list是单链表, 只朝前迭代, 已让其简单高效. 4.与其他序列式容器相比(array, vector, deque),list通常在任意位置进行插入,移除元素的执行效率高, 移除元素的执行效率更好. (deque相当于是vector和list的一个结合体的容器, list不支持随机访问[], 而deque在list的基础上有增加了随机访问接口.) 5.与其他序列式容器相比, list和forward_list通常在任意位置的随机访问: 比如: 要访问list的第六个元素, 必须从已知的位置(比如头部或者尾部)迭代到该位置, 在这段位置上迭代器需要线性的时间开销, list还需要一些额外的空间, 以保存每个结点的相关联信息(对于存储类型较小的元素的大list来说这可能是一个重要的要素). 2 list的使用 list的接口比较多, 此处类似, 只需要掌握如何正确的使用, 然后再去深入研究背后的原理, 以达到拓展的能力, 以下为list中一些常见的重要接口. 2.1 list的构造函数 当然C11中也提供了一个initializer_list的构造方法, 这个构造方法也比较常用 代码演示 void TestList1() {listint l1; //构造空的l1(默认构造函数)listint l2(4, 100); //l2中放4个值为100的元素listint l3(l2.begin(), l2.end()); //用l2的迭代器区间[begin(),end())左开右闭区间构造l3listint l4(l3); //拷贝构造//以数组为迭代器区间构造l5,左开右闭int array[] { 13,43,3,53 };listint l5(array, array sizeof(array) / sizeof(int));//列表格式初始化C11listint l6{ 1,23,4,5,6 };//用迭代器方式打印l5中的元素listint::iterator it l5.begin();while (it ! l5.end()){cout *it ;it;}cout endl;//C11范围for的方式遍历for (auto e : l5){cout e ;}cout endl; } 2.2 iterator的使用 此处, 大家可暂时将迭代器理解成一个指针, 该指针指向list的某个结点, 深度剖析模拟实现时我们会再次进行深度讲解 注意 begin与end为正向迭代器, 对迭代器执行操作, 迭代器向后移动rbegin与rend为反向迭代器, 对迭代器执行操作,迭代器向前移动 代码演示 void TestList2() {int array[] { 1,2,3,4,5,6,7,8,9,0 };listint l(array, array sizeof(array) / sizeof(int));//使用正向迭代器正向list中的元素//listint::iterator it l.begin();//C98语法auto it l.begin(); //C11之后推荐写法while (it ! l.end()){cout *it ;it;}cout endl;//使用反向迭代器逆向打印list中的元素//listint::reverse_iterator rit l.rbegin();auto rit l.rbegin();while (rit ! l.rend()){cout *rit ;rit;}cout endl; }2.3 list capacity 重点: 2.4 list element access 代码演示: int array[] { 1,2,3,4,5,6,7,8,9,0 };listint l(array, array sizeof(array) / sizeof(int));//使用正向迭代器正向list中的元素//listint::iterator it l.begin();//C98语法l.front() 5;l.back() 100;auto it l.begin(); //C11之后推荐写法while (it ! l.end()){cout *it ;it;}cout endl;2.5 list modifiers assign() 将新内容分配给列表容器替换其当前内容并相应地修改其大小。 重点 代码演示: //list的插入和删除 //push_back/pop_back/push_front/pop_front void TestList3() {int array[] { 1,2,3 };listint L(array, array sizeof(array) / sizeof(array[0]));//在list的尾部插入4,头部插入0L.push_back(4);L.push_front(0);PrintList(L);//删除list尾部结点和头部结点L.pop_back();L.pop_front();PrintList(L); }//insert/erase void TestList4() {int array1[] { 1,2,3 };listint L(array1, array1 sizeof(array1) / sizeof(array1[0]));//获取链表中的第二个结点auto pos L.begin();cout *pos endl;//在pos前插入值为4的元素L.insert(pos, 4);PrintList(L);//在pos位置插入5个值为5的元素L.insert(pos, 5, 5);PrintList(L);//在pos位置插入[v.begin(),v.end())区间的元素vectorint v{ 7,8,9 };L.insert(pos, v.begin(), v.end());PrintList(L);//删除pos位置上的元素L.erase(pos);PrintList(L);//删除list中[begin,end)区间上的元素,即删除list中所有的元素L.erase(L.begin(), L.end());PrintList(L);}void TestList5() {//用数组来构造listint array1[] { 1,2,3 };listint l1(array1, array1 sizeof(array1) / sizeof(array1[0]));PrintList(l1);//交换l1和l2中的元素listint l2;l1.swap(l2);PrintList(l1);PrintList(l2);l2.clear();cout l2.size() endl; }3. list的迭代器失效 前面说过, 此处大家可将迭代器暂时理解成类似于指针, 迭代器失效即迭代器所指向的结点的无效, 即该节点被删除了, 因为list的底层结构为带头结点的双向循环链表, 因此在list中进行插入时是不会导致list的迭代器失效的, 只有在删除时才会失效, 并且失效的只是指向被删除节点的迭代器, 其他迭代器不会受到影响. void TestIterator1() {int array[] { 1,2,3,4,5,6,7,8,9,0 };listint l(array, array sizeof(array) / sizeof(array[0]));auto it l.begin();while (it ! l.end()){//erase()函数执行后, it所指向的结点已经被删除, 因此//it无效,在下一次使用时,必须给其赋值//l.erase(it);//正确写法it l.erase(it);it;}}4. list与vector的对比 vector与list都是STL中非常重要的序列式容器, 由于两个容器的底层结构不同, 导致其特性以及应用场景不同, 其主要不同如下: 总结 STL list是一种适用于频繁插入和删除操作的容器提供了高效的插入和删除性能但随机访问的性能较差。因此在选择使用list时需要根据具体的使用场景进行权衡. 完 你的点赞与收藏是我更新的最大动力!
http://www.hkea.cn/news/14553832/

相关文章:

  • seo建站教程如何不花钱做网站
  • 做损坏文档的网站刚刚中国宣布重大消息
  • 智能网站建设北京建筑英才网最新招聘信息
  • 那些网站是php做的网站制作价
  • 苏州做网站优化的公司做网站 点击跳转
  • 建行网站网址是多少html5网站单页模板
  • 合肥网站建设兼职php网站后台密码忘记
  • 云建设网站免费word文档模板下载网站
  • 商城网站管理系统可以通过哪些网站注册域名
  • 创意视觉网站做网站服务器收费吗
  • 建立网站的基本流程黑龙江省住房与建设厅网站
  • 一键lnmp搭建wordpress柳市网站优化
  • 深圳做网站什么公司好医院网站建设要素
  • 武义建设工程网站单位建设网站申请报告
  • 在线修图网站网站建设专员工作
  • 网站建设数据库怎么选择wordpress网盘插件
  • 东莞手机网站建设怎么选景区旅游门户网站建设方案
  • 二级网站免费建wordpress导航怎么弄
  • 优秀的网站建设开发案例邢台网站建设服务商
  • 网站开发都用什么浏览器怎么制作图片文档
  • 网站怎么做百度的关键字印度网站开发成本
  • wordpress建什么网站好机器人网站建设规划书
  • 合肥建设学校网站界面做的比较好的网站
  • 中企动力 网站价格威联通怎么建设网站
  • 温州网站建设哪家公司好苏州保洁公司排行榜
  • 海南省住建设厅网站报监做传媒网站公司
  • 石家庄网站排名软件综合办公oa系统
  • wordpress 多站点建站教程深圳品牌策划与设计
  • 销售推广做那个网站著名网站设计
  • 塑模毕业设计代做网站游戏网站排行