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

合肥响应式网站建设方案南宁网站开发企业

合肥响应式网站建设方案,南宁网站开发企业,做一普通网站需要多少钱,ps做的网站稿怎么做成网站[STL]list使用 注#xff1a;本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…[STL]list使用 注本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop_front函数insert函数和erase函数swap函数resize函数clear函数 6. 数据操作函数sort函数reverse函数merge函数unique函数remove函数splice函数 1. list介绍 list是可以在常量时间内在任意位置进行插入和删除的序列式容器并且该容器可以前后双向迭代。list的底层是双向链表结构双向链表中每个元素存储在互不相关的独立节点中在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似最主要的不同在于forward_list是单链表只能朝前迭代已让其更简单高效。与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。与其他序列式容器相比list和forward_list最大的缺陷是不支持任意位置的随机访问比如要访问list 的第6个元素必须从已知的位置(比如头部或者尾部)迭代到该位置。 2. 构造函数 (1)构造函数 默认构造函数。 listint l; //创建一个空list(2)构造函数 创建一个有n个结点结点数据为val的list。 listint l(10, 66); (3)构造函数 使用迭代器构造列表。 vectorint v(10, 6); listint l(v.begin(), v.end()); //创建一个存储int类型的链表使用v初始化数据(4)构造函数 拷贝构造函数 listint l1(10,6); listint l2(l1); //使用l2拷贝构造l13. 迭代器相关函数 begin函数和end函数 begin函数 返回指向list第一个结点的正向迭代器。 end函数 返回指向list结尾的正向迭代器。 #include iostream #include list #include vector using namespace std; int main() {vectorint v;v.push_back(1); //在list中尾插数据1v.push_back(2); //在list中尾插数据2v.push_back(3); //在list中尾插数据3v.push_back(4); //在list中尾插数据4listint l(v.begin(), v.end());listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; //输出为 1 2 3 4return 0; }rbegin函数和rend函数 rbegin函数 返回指向list最后一个含有数据的结点的反向迭代器。 rend函数 指向list反向结尾的反向迭代器。 #include iostream #include list #include vector using namespace std; int main() {vectorint v;v.push_back(1); //在list中尾插数据1v.push_back(2); //在list中尾插数据2v.push_back(3); //在list中尾插数据3v.push_back(4); //在list中尾插数据4listint l(v.begin(), v.end());listint::reverse_iterator it l.rbegin();while (it ! l.rend()){cout *it ;it;}cout endl; //输出为 4 3 2 1return 0; }4. 容量相关函数 empty函数 判断list是否为空. #include iostream #include list #include vector using namespace std; int main() {listint l1;listint l2(5, 6);cout l1.empty() endl;//输出为1cout l2.empty() endl;//输出为0return 0; } size函数 获取list存储的结点个数。 #include iostream #include list #include vector using namespace std; int main() {vectorint v;v.push_back(1); //在list中尾插数据1v.push_back(2); //在list中尾插数据2v.push_back(3); //在list中尾插数据3v.push_back(4); //在list中尾插数据4listint l(v.begin(), v.end());cout l.size() endl; //输出为4return 0; }5. 数据修改函数 push_back函数和pop_back函数 push_back函数 在list结尾插入结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);cout l.size() endl; //输出为3return 0; }pop_back函数 在list结尾删除结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);cout l.size() endl; //输出为3l.pop_back();l.pop_back();cout l.size() endl; //输出为1l.pop_back();//l.pop_back(); -- 报错 -- 没有结点可删return 0; }push_front函数和pop_front函数 push_front函数 在list中头插结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_front(1);l.push_front(2);l.push_front(3);l.push_front(4);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 4 3 2 1return 0; }pop_front函数 在list中头删结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_front(1);l.push_front(2);l.push_front(3);l.push_front(4);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl;l.pop_front();l.pop_front();it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 2 1return 0; }insert函数和erase函数 和vector容器类似list容器也没有提供find函数而insert函数和erase函数是需要配合迭代器使用的因此需要使用算法库的find函数。 find函数查找成功会返回指向数据的迭代器失败会返回传入的last迭代器注意find函数的查找范围是从first迭代器至last迭代器前不包括last迭代器。 insert函数 功能1 在某一位置插入结点。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);listint::iterator pos find(l.begin(), l.end(), 2);l.insert(pos, 66);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; //输出为1 66 2 3 4return 0; }功能2 在某一位置插入n个存储相同数据的结点。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);listint::iterator pos find(l.begin(), l.end(), 2);l.insert(pos, 3, 66);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; //输出为1 66 66 66 2 3 4return 0; }功能3 传入其他list容器或者其他类型容器的迭代器将传入的迭代器区间内的数据插入。 #include iostream #include list #include algorithm using namespace std; int main() {listint l1(3, 66);listint l2;l2.push_back(1);l2.push_back(2);l2.push_back(3);listint::iterator pos find(l2.begin(), l2.end(), 2);l2.insert(pos, l1.begin(), l1.end());listint::iterator it l2.begin();while (it ! l2.end()){cout *it ;it;}cout endl; //输出为1 66 66 66 2 3return 0; }erase函数 功能1 删除迭代器指向的结点。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);listint::iterator pos find(l.begin(), l.end(), 2);l.erase(pos);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 1 3return 0; }功能2 将迭代器范围的结点都删除。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);l.push_back(5);listint::iterator start find(l.begin(), l.end(), 2);listint::iterator finish find(l.begin(), l.end(), 5);l.erase(start, finish);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 1 5return 0; }swap函数 将两个list数据交换通过交换list指向的头结点实现。 #include iostream #include list using namespace std; int main() {listint l1(3, 66);listint l2;l2.push_back(1);l2.push_back(2);l2.push_back(3);l1.swap(l2);listint::iterator it1 l1.begin();while (it1 ! l1.end()){cout *it1 ; //输出为 1 2 3it1;}cout endl;listint::iterator it2 l2.begin();while (it2 ! l2.end()){cout *it2 ; //输出为 66 66 66it2;}cout endl;return 0; }resize函数 如果n size, 会将结点删除至list只有n个结点由于list结点的释放成本是不高的因此不同于vector只是将末尾指向修改list会实际上的在调用resize函数时的删除结点。如果n size就将插入结点使得list有n个结点 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);l.push_back(5);cout l.size() endl; //输出为5l.resize(3); // n sizecout l.size() endl; //输出为3l.resize(6); // n sizecout l.size() endl; //输出为6return 0; }clear函数 释放所有结点使得list为空链表。 #include iostream #include list using namespace std; int main() {listint l(66, 6);cout l.size() endl; // 输出为66l.clear();cout l.size() endl; // 输出为0return 0; }6. 数据操作函数 sort函数 对list中的数据进行排序。 #include iostream #include list using namespace std;int main() {listint l1;l1.push_back(2);l1.push_back(1);l1.push_back(4);l1.push_back(7);l1.push_back(5);l1.push_back(9);l1.push_back(8);l1.sort();listint::iterator it l1.begin();it l1.begin();while (it ! l1.end()){cout *it ; //输出为: 1 2 4 5 7 8 9it;}return 0; }注 由于list是链表实现的迭代器是双向迭代器因此不能调用algorithm库内的sort函数因此需要单独设计sort函数但是list的sort函数由于结构原因导致性能不高。 reverse函数 将list内的结点逆置。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);listint::iterator it l.begin();while (it ! l.end()){cout *it ; //输出为: 1 2 3 4it;}l.reverse(); //将list逆置it l.begin();while (it ! l.end()){cout *it ; //输出为: 4 3 2 1it;}cout endl;return 0; }merge函数 如果两个list有序并且排序方式相同可以将一个list的结点连接到另一个list上并保持有序排序方式和连接前相同。 #include iostream #include list using namespace std; int main() {listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);listint l2;l2.push_back(6);l2.push_back(7);l2.push_back(8);l2.push_back(9);l2.merge(l1); //将l1的结点连接到l2连接后l1为空listint::iterator it l2.begin();while (it ! l2.end()){cout *it ;it;}cout endl;return 0; }unique函数 只能给数据有序的list进行数据去重操作如果数据无序去重操作会出现问题。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(2);l.push_back(2);l.push_back(3);l.push_back(3);l.push_back(3);l.push_back(4);l.unique(); //对list内的数据去重listint::iterator it l.begin();while (it ! l.end()){cout *it ; // 输出为: 1 2 3 4it;}cout endl;return 0; }remove函数 查找对应的数据并进行删除操作数据存在就删除不存在不会进行任何操作。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);l.remove(3); //删除数据为3的结点listint::iterator it l.begin();while (it ! l.end()){cout *it ; //输出为: 1 2 4it;}cout endl;return 0; }splice函数 将以一个list的指定部分的结点转移给其他list。 #include iostream #include list using namespace std;int main() {listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);listint l2;l2.push_back(5);l2.push_back(6);l2.push_back(9);l2.push_back(8);listint::iterator it l1.begin();l1.splice(it, l2); //将l2的所有结点转移到l1的begin位置it l1.begin();while (it ! l1.end()){cout *it ; //输出为:5 6 9 8 1 2 3 4it;}return 0; }
http://www.hkea.cn/news/14588463/

相关文章:

  • 深圳网站营销seo电话免费在线制作网页
  • 摄影网站开发的背景网络营销的收获与体会
  • 村级网站建设 不断增强常州哪些网站公司做的好处
  • 上海网站开发技术最好公司电话编程代码网站
  • 深圳数码网站建设网站开发资金
  • 包头市网站建设怎样建设网站流程
  • 房产证查询系统官方网站怎样在网上注册免费的网站
  • 网站建设的策划h网站模版
  • 怎么建网站站点社交网站先做pc站可以吗
  • 开封网站建设报价如何网站做镜像
  • 部门网站建设个人总结公司的seo是什么意思
  • 西安网站建设培训中心竞价排名点击
  • 自助建站系统个人网站网站建设如何弄链接
  • 网站闭站保护温州h5建站
  • 佛山做外贸网站如何各类网站规划
  • 重庆塔吊证查询网站网站建设的成果怎么写
  • onedrive做网站下载盘镇江网站制作价格如何计算
  • seo怎样新建网站汕头建总
  • 山东网站建设SEO优化制作设计公司绑米wordpress
  • 网站建设页面页脚怎么设置萍乡手机网站建设
  • ppt里做网站效果网站怎么算抄袭
  • 建个网站做产品怎样自媒体注册平台
  • 变化型网站wordpress新建数据库
  • wordpress地址和站点地址错域名网址查询
  • 国家重大建设项目库网站电话制作网站的完整步骤
  • 下载asp做网站教育培训类网站开发
  • 杭州正晖建设工程有限公司网站招标网招标信息
  • 怎挖掘网站关键词网络服务公司名字
  • 创建网站代码是什么问题广州有哪些知名企业
  • 设计网站公司速寻亿企邦永州高端网站建设