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

有什么网站图片可以做图片合成网站调试

有什么网站图片可以做图片合成,网站调试,网站开发公司外包,企业网站建设可行性分析任务目录 一.list 1.list的介绍 2.为什么会有list? 二.list的常见接口 1.list的构造函数 2.list的遍历 3.迭代器类型 4.list的头插头删和尾插尾删 5.list任意位置的插入和删除 6.list的sort()及reverse() 7.迭代器失效 三.整体代码 一.list 1.list的介绍 list的文档说…

目录

一.list

1.list的介绍

2.为什么会有list?

二.list的常见接口

1.list的构造函数

2.list的遍历

3.迭代器类型

4.list的头插头删和尾插尾删

5.list任意位置的插入和删除

6.list的sort()及reverse()

7.迭代器失效

三.整体代码


一.list

1.list的介绍

list的文档说明

  1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代
  2. ist的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素
  3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效
  4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好
  5. 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list 的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这可能是一个重要的因素)

2.为什么会有list?

list是为了补充vector的缺点

vector缺点:

  1. 头部和中部的删除和插入效率低.O(N),因为需要挪动数据
  2. 插入数据空间不够需要增容.增容需要开辟新空间,拷贝数据,释放旧空间,会付出很大代价

优点:

  1. 支持下标的随机访问.间接的就很好支持排序,二分查找,堆算法等.

list优点:

  1. list头部和中间插入不需要挪动数据,效率高.O(1)
  2. list插入数据是新增节点,不需要增容

缺点:

  1. 不支持随机访问

所以实际使用中vector和list是相辅相成

二.list的常见接口

list的接口较为简单,学会使用vector,list的接口基本差不多,主要在下节了解如何实现list

1.list的构造函数

void print_list(const list<int>& lt)
{list<int>::const_iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";++it;}cout << endl;
}void test_list1()
{//带头双向循环的链表list<int> lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);print_list(lt1);list<int> lt2(lt1);print_list(lt2);list<int> lt3;lt3.push_back(10);lt3.push_back(20);lt3.push_back(30);lt3.push_back(40);lt1 = lt3;print_list(lt1);
}

lt1创建了一个对象并向其中尾插书局,lt2拷贝构造lt1,lt3赋值给lt1

2.list的遍历

在vector和string中我们都可以通过[ ] + 下标遍历,但是在list中是不允许的,因为list底层是链表,不想数组是连续的,可以直接访问

1.迭代器遍历

	list<int>::iterator it = lt1.begin();while (it != lt1.end()){cout << *it << " ";++it;}cout << endl;

2.范围for遍历

for (auto ch : lt1)
{cout << ch << " ";
}
cout << endl;

3.迭代器类型

迭代器类型从方向可以分为正向,反向,从属性分为普通和const

list<int>::iterator it = lt1.begin();
while (it != lt1.end())
{cout << *it << " ";++it;
}
cout << endl;list<int>::reverse_iterator rit = lt1.rbegin();
while (rit != lt1.rend())
{cout << *rit << " ";++rit;
}
cout << endl;list<int>::const_iterator it = lt.begin();
while (it != lt.end())
{cout << *it << " ";++it;	
}
cout << endl;

4.list的头插头删和尾插尾删

void test_list2()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_front(0);lt.push_front(-1);print_list(lt);lt.pop_back();lt.pop_front();print_list(lt);
}

5.list任意位置的插入和删除

void test_list3()
{list<int> 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);print_list(lt);list<int>::iterator pos = find(lt.begin(), lt.end(), 3);if (pos != lt.end()){lt.insert(pos, 30);lt.erase(pos);}print_list(lt);
}

6.list的sort()及reverse()

void test_list4()
{list<int> lt;lt.push_back(5);lt.push_back(8);lt.push_back(2);lt.push_back(6);lt.push_back(4);lt.sort();print_list(lt);lt.reverse();print_list(lt);
}

虽然可以通过sort直接排序,reverse逆序,但是平时并不经常使用,效率低

7.迭代器失效

当我们想要删除list中的偶数

void test_list5()
{list<int> lt;lt.push_back(3);lt.push_back(2);lt.push_back(1);lt.push_back(5);lt.push_back(4);lt.push_back(6);list<int>::iterator it = lt.begin();while(it!=lt.end()){if (*it % 2 == 0){lt.erase(it);++it;}}print_list(lt);
}

会发现程序崩溃

这是因为迭代器失效了,当我们删除的时候就要注意这一点

void test_list5()
{list<int> lt;lt.push_back(3);lt.push_back(2);lt.push_back(1);lt.push_back(5);lt.push_back(4);lt.push_back(6);list<int>::iterator it = lt.begin();while(it!=lt.end()){if (*it % 2 == 0){it = lt.erase(it);}else{++it;}}print_list(lt);
}

三.整体代码

#include<iostream>
#include<list>
using namespace std;void print_list(const list<int>& lt)
{list<int>::const_iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";++it;}cout << endl;
}void test_list1()
{//带头双向循环的链表list<int> lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);print_list(lt1);list<int>::iterator it = lt1.begin();while (it != lt1.end()){cout << *it << " ";++it;}cout << endl;for (auto ch : lt1){cout << ch << " ";}cout << endl;list<int>::reverse_iterator rit = lt1.rbegin();while (rit != lt1.rend()){cout << *rit << " ";++rit;}cout << endl;list<int> lt2(lt1);print_list(lt2);list<int> lt3;lt3.push_back(10);lt3.push_back(20);lt3.push_back(30);lt3.push_back(40);lt1 = lt3;print_list(lt1);
}void test_list2()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_front(0);lt.push_front(-1);print_list(lt);lt.pop_back();lt.pop_front();print_list(lt);
}void test_list3()
{list<int> 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);print_list(lt);list<int>::iterator pos = find(lt.begin(), lt.end(), 3);if (pos != lt.end()){lt.insert(pos, 30);lt.erase(pos);}print_list(lt);
}void test_list4()
{list<int> lt;lt.push_back(5);lt.push_back(8);lt.push_back(2);lt.push_back(6);lt.push_back(4);lt.sort();print_list(lt);lt.reverse();print_list(lt);
}void test_list5()
{list<int> lt;lt.push_back(3);lt.push_back(2);lt.push_back(1);lt.push_back(5);lt.push_back(4);lt.push_back(6);list<int>::iterator it = lt.begin();while(it!=lt.end()){if (*it % 2 == 0){it = lt.erase(it);}else{++it;}}print_list(lt);
}int main()
{//test_list1();//test_list2();//test_list3();//test_list4();test_list5();
}

http://www.yayakq.cn/news/667376/

相关文章:

  • 徐州网站关键词推广青岛企业网站设计制作
  • 广州商砼建站规范成品网站源码免费
  • 机构改革网站建设西宁网站建设哪家公司好
  • wordpress 多站点 多域名石家庄网站建设模板服务
  • 创建网站的公司乡镇网站建设方案
  • 网站建设与网页设计可行性分析报告前端面试
  • 免费的网站开发工具ps做游戏下载网站有哪些内容
  • 上海网站建设公司招人百家号查询排名数据查询
  • app与网站的关系wordpress 开启缓存
  • 怎么查看网站disallow谷歌推广外贸建站
  • 网站建设公司的服务特点重庆火灾新闻最新消息
  • 兰州百度公司网站建设html网站欣赏
  • 七牛云wordpress网站seo是什么
  • 自己做的网站显示不安全怎么回事网站建设对促进部门工作的益处
  • 贺州市住房和城乡建设局网站网站设计制作怎样可以快速
  • 网站页脚怎么做能好看点危险网站怎么做腾讯云认证
  • 权重查询爱站网艺术网站定制
  • 青岛建设房地产招聘信息网站建站之星多语言
  • 网站建设销售培训成品网源码7w8w
  • php网站开发待遇网站优化一般怎么做
  • 学习做网站的网站成都哪家网站建设做得好
  • 建设商城网站做网站买什么服务器
  • custed谁做的网站网站设计素材下载
  • 花生壳怎么建设购物网站开发公司官网
  • 贵阳建设工程招聘信息网站网站扁平化结构和树形结构
  • 怎么设自己的网站管理软件应用
  • 精美公司网站源码wordpress生成推广链接地址
  • 企业网络营销网站交城有做网站的吗
  • 用什么手机软件做网站外贸网站制作需求
  • h5长图模板上海网站排名优化怎么做