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

国内网站建设建设外企公司网站开发设计

国内网站建设建设,外企公司网站开发设计,wordpress代码逻辑,深圳官方宣布解封时间目录 一.list的介绍 二.list类成员函数的讲解 2.2迭代器 三.添加删除数据#xff1a; 3.1添加#xff1a; 3.2删除数据 四.排序及去重函数#xff1a; 错误案例如下#xff1a; 方法如下#xff1a; 一.list的介绍 list列表是序列容器#xff0c;允许在序列内的任何…目录 一.list的介绍 二.list类成员函数的讲解 2.2迭代器 三.添加删除数据 3.1添加 3.2删除数据 四.排序及去重函数 错误案例如下 方法如下 一.list的介绍 list列表是序列容器允许在序列内的任何位置执行插入元素或者删除元素等操作。list列表容器的底层是由链表封装而成并且该链表的类型还是带头双向循环链表。 二.list类成员函数的讲解 对于list容器的成员函数们 它们与vector与String容器的功能作用相差不大都是增删查改能够通过迭代器遍历或者修改容器中某个元素的数据。由于前者与后两者底层类型的不同侧面表现出了list容器的使用是即插即用 不需要扩容缩容意味着不会有reserve()、shrink_to_fit()等函数 2.2迭代器 list链表容器的迭代器与String和Vector的迭代器也不同后两者是使用的原生指针由于连续地址空间的缘故指针只需要通过增加或者减少类型的字节便可以定位到具体的位置。 而对于List容器而言它的元素是一个接一个的节点每个节点是由指针相连所以各个节点的地址并不是连续的那么使用原生指针去寻找元素位置会相当复杂所以list的迭代器是一种新型迭代器采用自定义类型制造而出。 虽说list迭代器的底层与string,vector的迭代器并不同但是使用方式都一样 vectorT:: iterator vtv.begin(); String:: iterator sts.begin(); listT::iterator ltl.begin(); 都是通过类域加作用域限定符 iterator的方式去定义。  在迭代器中也是分为普通迭代器、const迭代器、反向迭代器、const反向迭代器。其各个成员作用也与之前讲String、vector容器一样这里就不再过多讲解了。不清楚的话可以翻一翻我之前写的String和vector容器的讲解. 这里直接上练习代码 #includeiostream #includelist int main(){listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);for (auto e:l1) {cout e ;}cout endl;listint::iterator lit1 l1.begin();while (lit1 ! l1.end()) {cout (*lit1) ;lit1;}cout endl;cout -------------------------------------------- endl;//反向迭代器listint::reverse_iterator lit2 l1.rbegin();while (lit2 ! l1.rend()) {cout (*lit2) ;lit2;}cout endl;//const反向迭代器listint::const_reverse_iterator lit3 l1.crbegin();while (lit3! l1.crend()) {cout (*lit3) ;//cout (*lit3) ; //报错lit3;}cout endl;//const正向迭代器listint::const_iterator lit4 l1.cbegin();while (lit4 ! l1.cend()) {//cout (*lit3) ; //报错cout (*lit4) ;lit4;}cout endl;}return 0;}运行结果  三.添加删除数据 3.1添加 int main(){listdouble l2;//尾插l2.push_back(9.25);l2.push_back(60.10);l2.push_back(32.19);l2.push_back(58.79);//头插l2.insert(l2.begin(), 3.14);for (auto e : l2) {cout e ;}cout endl;//尾插l2.insert(l2.end(),999.99);for (auto e : l2) {cout e ;}cout endl;//中间插//find是std库函数中的auto pos find(l2.begin(), l2.end(), 32.19);l2.insert(pos, 46.99);for (auto e : l2) {cout e ;}cout endl;//头插push_frontl2.push_front(12.66);for (auto e : l2) {cout e ;}cout endl;return 0;} 注对于insert来说它的形参需要指定指针类型的pos位置而pos位置需要自己去定位链表上图代码中我是通过库函数find去进行定位的list容器本身并不会提供find函数因为库中的find函数形参以及返回值就可以很好的帮助我们进行定位。 并且之前我讲过vector容器中insert函数会引发指针失效问题在list中insert函数不会引发该问题。 3.2删除数据 listchar l2;l2.push_back(a);l2.push_back(b);l2.push_back(c);l2.push_back(d);for (auto e : l2) {cout e ;}cout endl;//尾删l2.pop_back();for (auto e : l2) {cout e ;}cout endl;//头删l2.pop_front();for (auto e : l2) {cout e ;}cout endl;//中间删——erasel2.push_back(h);l2.push_back(i);l2.push_back(j);l2.push_back(k);for (auto e : l2) {cout e ;}cout endl;//find是std库函数中的auto pos find(l2.begin(), l2.end(), p);//l2.erase(pos); //找不到的删会报异常for (auto e : l2) {cout e ;}cout endl;pos find(l2.begin(), l2.end(), h);l2.erase(pos);for (auto e : l2) {cout e ;}cout endl;运行结果  四.排序及去重函数 void Test6() {listint l1;l1.push_back(34);l1.push_back(100);l1.push_back(26);l1.push_back(79);l1.push_back(83);l1.push_back(0);l1.push_back(34);l1.push_back(55);l1.push_back(13);for (auto e : l1) {cout e ;}cout endl;//排序l1.sort();for (auto e : l1) {cout e ;}cout endl;} sort()函数可对list对象的元素进行整体排序。 去重就是对该链表对象进行遍历将元素值相同的多个元素进行删除只保留唯一一个值节点 。 对上面对象l1进行元素去重 l1.unique();cout 去重后的链表;for (auto e : l1) {cout e ;}cout endl; 结果  这里讲一下unique函数的真正用法虽然unique函数可以对链表进行元素去重但前提是该链表一定处于完全有序的状态才行          若链表不是有序的去重也就是无效的 错误案例如下 listint l2;l2.push_back(34);l2.push_back(100);l2.push_back(26);l2.push_back(79);l2.push_back(83);l2.push_back(0);l2.push_back(34);l2.push_back(55);l2.push_back(13);cout 原链表;for (auto e : l2) {cout e ;}cout endl;l2.unique();//注34仍是俩个没有被去除cout 去重后的链表;for (auto e : l2) {cout e ;}cout endl;原链表是无序的使用unique函数后该链表还是有多个重复元素存在 最后强调一下list容器的sort排序函数并不好用排序效率低下尽量少用若想进行高效排序可以利用vector容器搭配std库中的sort函数进行。  方法如下 void Test_Sort(){listint lt1;lt1.push_back(15);lt1.push_back(9);lt1.push_back(3);lt1.push_back(10);lt1.push_back(80); lt1.push_back(5);lt1.push_back(-3);lt1.push_back(0);lt1.push_back(42);//假设链表中有这么多数据vectorint v; //创建vector对象v.reserve(9); //根据链表对象的数据个数开辟空间//通过遍历lt1链表将链表中的数据一个一个尾插到vector对象v中for (auto e : lt1){v.push_back(e);}//使用vector方式进行std库中的sort排序sort(v.begin(), v.end());size_t i 0;//最后将vector排好序的数据在传回lt1中for (auto e : lt1){e v[i];}} 若是list容器对象需要排序的数据量过大的话利用vector排序sort的方式可比直接用list.sort()效率要高很多很多。
http://www.hkea.cn/news/14288627/

相关文章:

  • 网站排名查询系统网站淘宝客一般怎么做
  • 西安建设公司网站wordpress加载模板
  • wordpress新站都该设置些什么做空比特币的网站
  • 电影网站建设教学视频邵东做网站
  • 免费外链网站最佳品牌营销策划公司
  • 快速搭建网站的软件广东两学一做网站
  • 广东省住房和城乡建设厅官方网站发布企业信息的网站
  • 网站服务器怎么更换阿里巴巴国际站怎么网站建设
  • 怎么做北京赛车网站kali wordpress
  • 网站信息备案变更 哪里做搭建linux服务器
  • 有哪些是用到了网站推广wordpress 微商
  • 佛山公司网站推广外包服务优化方案2022版
  • 网站自动采集rss佛山市网站建设企业
  • 广州北京网站建设公司网站权重如何做
  • 如何在网站上做推广专业的佛山网站设计
  • 免费ppt模板 网站开发专业网站建设的价格
  • 做磁力网站网站开发发展存在的问题
  • 自己做的网站绑定域名怎么添加wordpress模板文件
  • wikidot网站怎么做东莞整站优化公司火速公司
  • 怎么在主机上的建设网站做银行流水网站
  • 外国做电子产品网站有哪些北京轨道交通建设公司网站
  • wordpress 婚纱摄影昆山做网站优化
  • 松北建设局网站4399国语免费播放
  • 无锡富通电力建设有限公司网站正邦设计作品
  • 怎么用div做网站网站选项按钮
  • 现在最常用网站开发工具做网站卖别人的软件可以吗
  • wordpress站群代关于政务网站建设工作情况的总结
  • 极简资讯网站开发求职网站
  • 嘉兴建设公司网站ps软件下载平板版
  • 网站标题能改吗本地网站建设教程xampp