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

自己创造网站上海个人做网站

自己创造网站,上海个人做网站,网站建设公司如何规避风险,佛山百度关键词排名目录 一、list的介绍二、list的使用list的定义方式 三、list的插入和删除push_back和pop_backpush_front和pop_frontinserterase 四、list的迭代器使用五、list的元素获取六、list的大小控制七、list的操作函数sort和reversemergeremoveremove_ifuniqueassignswap 一、list的介… 目录 一、list的介绍二、list的使用list的定义方式 三、list的插入和删除push_back和pop_backpush_front和pop_frontinserterase 四、list的迭代器使用五、list的元素获取六、list的大小控制七、list的操作函数sort和reversemergeremoveremove_ifuniqueassignswap 一、list的介绍 list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器并且该容器可以前后双向迭代。list的底层是双向链表结构双向链表中每个元素存储在互不相关的独立结点当中在结点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似最主要的不同在于forward_list是单链表只能进行单方向迭代。 与其他容器相比list通常在任意位置进行插入、删除元素的执行效率更高。list和forward_list最大的缺陷是不支持在任意位置的随机访问其次list还需要一些额外的空间以保存每个结点之间的关联信息对于存储的类型较小元素来说这可能是一个重要的因素。 二、list的使用 list的定义方式 构造函数接口说明list()构造空的listlist (size_type n, const value_type val value_type())构造的list中包含n个值为val的元素list (const list x)拷贝构造函数list (InputIterator first, InputIterator last)用[first, last)区间中的元素构造list void test_list() {//构造int类型的空容器listint lt1; // 构造一个含有n个val的某类型容器listint lt2(5, 2);//拷贝构造某类型容器listint lt3(lt2);//使用迭代器拷贝构造某一段内容string str(hello world);listchar lt4(str.begin(), str.end()); //构造string对象某段区间的复制品//构造数组某段区间的复制品int arr[] { 1, 2, 3, 4, 5 };listint lt5(arr, arr sizeof(arr) / sizeof(int)); }三、list的插入和删除 函数声明接口说明push_back在list尾部插入值为val的元素pop_back删除list中最后一个元素push_front在list首元素前插入值为val的元素pop_front删除list中第一个元素insert在list position 位置中插入值为val的元素erase删除list position位置的元素 push_back和pop_back void test1_list() {//push_back()和pop_back(),两种循环都可以listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);auto it lt.begin();while (it ! lt.end()){cout *it ; //1 2 3 4it;}cout endl;lt.pop_back();lt.pop_back();for (auto e : lt){cout e ; //1 2}cout endl; }push_front和pop_front void test2_list() {//push_front和pop_front,通常用范围for方便一点listint lt1;lt1.push_front(1);lt1.push_front(2);lt1.push_front(3);for (auto e : lt1){cout e ; //3 2 1}cout endl;lt1.pop_front();for (auto e : lt1){cout e ; //2 1}cout endl; }insert 在指定迭代器位置插入一个数。在指定迭代器位置插入n个值为val的数。在指定迭代器位置插入一段迭代器区间左闭右开。 void test3_list() {listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);//5前插入17//v.insert(v.begin() 5, 17); //顺序表的话迭代器开头5就可以插入auto it lt.begin(); //链表1.类似指针指到5前2.插入for (size_t i 0; i 5; i) {it;}lt.insert(it,17); for (auto e : lt){cout e ; //1 2 3 4 5 17}cout endl;//在指定的数前插入例如在4前插入100使用find找到该数it find(lt.begin(), lt.end(), 4);if (it ! lt.end()){lt.insert(it, 100);}for (auto e : lt){cout e ; //1 2 3 100 4 5 17}cout endl; }find函数是头文件“algorithm”当中的一个函数该函数在指定迭代器区间左闭右开寻找指定值的位置并返回该位置的迭代器。 templateclass InputIterator, class TInputIterator find (InputIterator first, InputIterator last, const T val) {while (first!last) {if (*firstval) return first;first;}return last; }erase list当中的erase函数支持两种删除方式 删除指定迭代器位置的元素。删除指定迭代器区间左闭右开的所有元素。 void test4_list() {listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);lt.push_back(7);auto it find(lt.begin(), lt.end(), 3);lt.erase(it); //删除3for (auto e : lt){cout e ; //1 2 4 5 6 7}cout endl;it find(lt.begin(), lt.end(), 5);lt.erase(it, lt.end()); //删除5后所有元素(左闭右开)for (auto e : lt){cout e ; //1 2 4}cout endl; }四、list的迭代器使用 函数声明接口说明begin end返回第一个元素的迭代器返回最后一个有效元素下一个位置的迭代器rbegin rend返回第一个元素的reverse_iterator,即end位置返回最后一个有效元素下一个位置的reverse_iterator,即begin位置 void test5_list() {//正向迭代器遍历容器listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);//listint::iterator it lt.begin();auto it lt.begin();while (it ! lt.end()){cout *it ; //1 2 3 4it;}cout endl;//反向迭代器遍历容器listint lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);auto rit lt1.rbegin();while (rit ! lt1.rend()){cout *rit ; //4 3 2 1rit;}cout endl; }五、list的元素获取 函数声明接口说明front返回list的第一个节点中值的引用back返回list的最后一个节点中值的引用 void test6_list() {listint lt;lt.push_back(0);lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);cout lt.front() endl; //0cout lt.back() endl; //4 }六、list的大小控制 函数声明接口说明size返回list中有效节点的个resize1.当所给值大于当前的size时将size扩大到该值扩大的数据为第二个所给值若未给出则默认为容器所存储类型的默认构造函数所构造出来的值。2.当所给值小于当前的size时将size缩小到该值。empty检测list是否为空是返回true否则返回falseclear清空list中的有效元素 void test7_list() {//size获取当前容器当中的元素个数listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);cout lt.size() endl; //4//resize扩容(可赋值)或缩容listint lt1(5, 2);for (auto e : lt1){cout e ; //2 2 2 2 2}cout endl;lt1.resize(8, 5); //将size扩大为8扩大的值为5for (auto e : lt1){cout e ; //2 2 2 2 2 5 5 5}cout endl;lt1.resize(3); //将size缩小为3for (auto e : lt1){cout e ; //2 2 2}cout endl;//empty判断是否为空没元素返回1有元素返回0listint lt2;cout lt2.empty() endl; //1cout lt1.empty() endl; //0//clear清空容器(size元素)listint lt4(5, 2);for (auto e : lt4){cout e ; //2 2 2 2 2}cout endl; cout lt4.size() endl; //5lt.clear(); //清空容器for (auto e : lt){cout e ; //(无数据)}cout endl; cout lt.size() endl; //0 }七、list的操作函数 函数声明接口说明sort将容器当中的数据默认排为升序reverse将容器当中元素的位置进行逆置splice用于两个list容器之间的拼接remove用于删除容器当中特定值的元素remove_if用于删除容器当中满足条件的元素unique用于删除容器当中连续的重复元素merge将一个有序list容器合并到另一个有序list容器当中使得合并后的list容器任然有序。类似于归并排序assign将新内容分配给容器替换其当前内容swap交换两个容器的内容 sort和reverse void test8_list() {listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(10);lt.push_back(20);for (auto e : lt){cout e ; //1 2 3 4 10 20}cout endl;lt.reverse();for (auto e : lt){cout e ; //20 10 4 3 2 1}cout endl; }merge merge函数用于将一个有序list容器合并到另一个有序list容器当中使得合并后的list容器任然有序。类似于归并排序 void test10_list() {listint lt;lt.push_back(17);lt.push_back(55);lt.push_back(32);listint lt1;lt1.push_back(11);lt1.push_back(3);lt1.push_back(100);lt.sort();lt1.sort();lt.merge(lt1); //将lt1合并到ltfor (auto e : lt){cout e ; //3 11 17 32 55 100}cout endl; }remove remove函数用于删除容器当中特定值的元素。 void test9_list() {int arr[] { 12,65,32,11,22,11,3 };listint mylist(arr, arr sizeof(arr) / sizeof(int));mylist.remove(11);for (auto e : mylist){cout e ; //12 65 32 22 3}cout endl; }remove_if remove_if函数用于删除容器当中满足条件的元素 bool single_digit(const int val) {return val 10; } void test11_list() {listint lt;lt.push_back(3);lt.push_back(2);lt.push_back(65);lt.push_back(33);lt.push_back(9);lt.push_back(5);lt.push_back(4);for (auto e : lt){cout e ;}cout endl; //3 2 65 33 9 5 4lt.remove_if(single_digit); //删除容器当中值小于10的元素for (auto e : lt){cout e ;}cout endl; //65 33 }unique unique函数用于删除容器当中连续的重复元素。 void test12_list() {listint lt;lt.push_back(2);lt.push_back(3);lt.push_back(3);lt.push_back(2);lt.push_back(1);lt.push_back(3);lt.push_back(3);for (auto e : lt){cout e ;}cout endl; //2 3 3 2 1 3 3lt.sort(); lt.unique(); //删除容器当中连续的重复元素for (auto e : lt){cout e ;}cout endl; //1 2 3 }assign assign函数用于将新内容分配给容器替换其当前内容新内容的赋予方式有两种 将n个值为val的数据分配给容器。将所给迭代器区间当中的内容分配给容器。 void test13_list() {listchar lt(3, s);lt.assign(4, a); //将新内容分配给容器替换其当前内容for (auto e : lt){cout e ; //a a a a}cout endl;string str(hello word);lt.assign(str.begin(), str.end()); //将新内容分配给容器替换其当前内容for (auto e : lt){cout e ; //h e l l o w o r d}cout endl; }swap void test14_list() {listint lt1(5, 2);listint lt2(2, 6);lt1.swap(lt2); //交换两个容器的内容for (auto e : lt1){cout e ;}cout endl; //6 6for (auto e : lt2){cout e ;}cout endl; //2 2 2 2 2 }
http://www.hkea.cn/news/14471573/

相关文章:

  • 扬州做网站公司哪家好制作网站公司
  • 论坛类网站开发报价唐山网站建设公司
  • 谷歌网站的设计原则百度排名优化工具
  • 网站建设培训西安深圳华强北鬼市
  • 何做好网站建设销售wordpress 子分类文章
  • 网站做广告如何做帐怎么导入wordpress模板
  • 毕业设计 做网站网站建设易网
  • 网站升级维护中页面竞价外包代运营公司
  • 网站关键词优化原理红色网站建设的作用和意义
  • 惠州网站制作推广公司排名广告效果图设计
  • 网站设计验收企业网站管理系统 软件著作权
  • dede音乐网站源码c#做的网站怎么上传图片
  • 摄影网站的模板网站安全建设架构
  • 个体营业执照网站备案如何获取新注册公司电话
  • 长沙建站公司模板房建设计网站好
  • 景征网站建设免费建网站软件哪个好
  • 普拓网站建设郑州网站制作_郑州网页制作_做网站设计_河南网站制作网
  • 程序员 做 个人网站短链生成网站
  • 分类信息网站系统国内wordpress例子
  • 安阳网站建设哪家好开一个软件开发公司需要多少钱
  • 网站制作大型公司房产信息网510
  • 装潢设计培训班学费多少钱seo搜索引擎优化书籍
  • 田贝网站建设汇算清缴在哪个网站上做
  • 自己做发小说网站app下载汅api免费安卓
  • 网站源码上传到空间以后怎么做观澜网站建设公司
  • mc建筑网站wordpress 众筹中文
  • wordpress 手机网站支付华竣国际的展厅设计公司
  • 延边州建设局网站企云网站建设
  • 广阳区建设局网站设置网站关键词怎么做
  • 珠海网站建设尚古道策略西安都蓝网站建设