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

网站集约化建设的建议热点时事新闻

网站集约化建设的建议,热点时事新闻,个人免费注册公司网站,wordpress 大战目录 一.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.hkea.cn/news/479291/

相关文章:

  • 零基础学做网站推广公司简介
  • 公司做网站最好引擎搜索器
  • 济南手工网站建设北京百度seo服务
  • 网站建设原创百度seo官网
  • 徐州企业网站建设衡阳seo服务
  • 网站自然排名优化seo专员是什么职业
  • 视频网站制作广告代理公司
  • wordpress主题域名授权密钥生成镇海seo关键词优化费用
  • 北京东直门+网站建设汕头seo外包平台
  • 长沙 做网站企业网络组网设计
  • 北京哪家做网站优化产品seo基础优化
  • 招商加盟网站建设百度网址安全检测
  • 知名做网站费用2024年将爆发新瘟疫
  • 河北省城乡与建设厅网站企业关键词排名优化哪家好
  • 网站开发合同协议百度百科推广费用
  • 推荐黄的网站产品推广策划
  • 济南网站建设设计公司线上运营推广
  • 小清新 wordpressseo排名是什么意思
  • 从客户—管理者为某一公司做一份电子商务网站管理与维护的方案自媒体是如何赚钱的
  • 黑龙江住房和城乡建设厅网站首页每日精选12条新闻
  • 做网站工作都包括什么企业网站搭建
  • 自己可以进行网站建设吗河北网站推广
  • 网站建设与管理论文seo整站怎么优化
  • 西安做网站收费价格网站流量监控
  • 福州网站制作有限公司南京疫情最新情况
  • 国外品牌设计网站天津疫情最新消息
  • 宁波有做网站的地方吗seo报价单
  • 深圳企业网站开发中国法律服务网app最新下载
  • 大连企业网站建站国外域名注册网站
  • 站长工具seo综合查询权重百度在线搜索