迭代器 ------------如何使用迭代器(list)
肯定会有同学有疑问,那既然是个双向带头循环链表,那为什莫要用STL中容器list,
#pragma once
#include<iostream>
using namespace std;
#include<list>
void test_list()
{list<int> l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);}
#pragma once
#include<iostream>
using namespace std;
#include<list>
void test_list()
{list<int> l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);void print_list(const list<int>& l);//void print_list1(list<int>& l);//list<int>::iterator it = l1.begin();//遍历链表//while (it != l1.end())//{// cout << *it << " ";// it++;//}//cout << endl;///size_t n = 10;//如果有n个结点,打印n个。没有n个结点,全部打印//list<int>::iterator it = l1.begin();//while (it != l1.end() && n--)//{// cout << *it << " ";// it++;//}//cout << endl;////list<int>::reverse_iterator rit = l1.rbegin();//反向迭代器 打印出来是倒序的//while (rit != l1.rend())//{// cout << *rit << " ";// rit++;//}//cout << endl;//print_list(l1);//掉const迭代器//print_list1(l1);//掉普通迭代器
}
//void print_list1( list<int>& l) //最好传引用,不然深拷贝代价太大
//{
// list<int>::iterator it = l.begin();//普通迭代器 可读可写
// while (it != l.end())
// {
// if (*it % 2)
// {
// *it = *it * 2;
// cout << *it << " ";
// }
// ++it;
// }
//}
void print_list(const list<int>& l) //最好传引用,不然深拷贝代价太大
{list<int>::const_iterator it = l.begin(); //const迭代器 只能读不能写while (it != l.end()){if (*it % 2){//*it = *it * 2; const类型不能改变值,只能访问cout << *it << " ";}++it;}
}
list<int>::iterator it = l1.begin();//本意是相删除所有偶数while (it != l1.end()){if (*it % 2){l1.erase(it);}cout << *it << " ";it++;}
其实容器list 里面erase()有一个返回值,返回的是指向下一个结点的迭代器
while (it != l1.end()){if (*it % 2){it=l1.erase(it);}else{cout << *it << " ";it++;}}
删除一个结点,让it接受下,也就是it现在是指向下个结点。
迭代器 ------------如何使用迭代器(list)相关推荐
- 迭代器和反向迭代器,常量迭代器和非常量迭代器
迭代器的类型共有4种:<T>::Iiterator,<T>::const_iterator,<T>::reverse_iterator,<T>::con ...
- php迭代器作用,PHP迭代器介绍
迭代器有一个简单且常见的接口: function Iterator($array) //构造函数.使需要遍历的数组作为一个参数 function reset() //设置内部指针指向第一个元素 fun ...
- python迭代器使用_python迭代器的使用方法实例
什么是迭代器?迭代器是带有next方法的简单对象,当然也要实现__iter__函数.迭代器能在一序列的值上进行迭代,当没有可供迭代时,next方法就会引发StopIteration 的异常.pytho ...
- java设计模式迭代器模式_迭代器设计模式示例
java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...
- 插入迭代器、流迭代器、反向迭代器、移动迭代器
文章目录 前言 插入迭代器 inserter front_inserter back_inserter iostream迭代器 istream_iterator 读取输入流 istream_itera ...
- python迭代器好处_python迭代器
知识内容: 1.可迭代对象和迭代器 2.判断迭代器和可迭代对象的方法 3.迭代器的优缺点 一.可迭代对象和迭代器 1.可迭代对象 -> Iterable (1)可迭代协议 可以被迭代要满足要求的 ...
- python生成器迭代器_python 生成器 迭代器
阅读目录 一 递归和迭代 二 什么是迭代器协议 三 python中强大的for循环机制 四 为何要有for循环 五 生成器初探 六 生成器函数 七 生成器表达式和列表解析 八 生成器总结 一 递归和迭 ...
- java集合迭代器_java集合迭代器
一.Java中有一个设计模式是迭代器模式 1.迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 2.迭代器模式概述 Java集 ...
- java 迭代器失效_迭代器失效的几种情况
关于迭代器失效,,今天做一个总结. 迭代器失效分三种情况考虑,也是三种数据结构考虑,分别为数组型,链表型,树型数据结构. 1.对于序列式容器,比如vector,删除当前的iterator会使后面所有元 ...
- Python 迭代器和 C++ 迭代器,最大的不同竟然是......
作者 | 樱雨楼 责编 | 胡巍巍 前言 迭代器(Iterator)是 Python 以及其他各种编程语言中的一个非常常见且重要,但又充满着神秘感的概念.无论是 Python 的基础内置函数,还是各类 ...
最新文章
- python秩和检验(Kruskal-Wallis H Test)
- sql2008表结构查看_【赵强老师】Oracle数据库的存储结构
- 数据缺失、混乱、重复怎么办?最全数据清洗指南
- 【转载】ftp获取文件
- WebBrowser控件判断完全加载中DocumentCompleted和Navigated的关系
- 蓝桥杯 算法训练 数字三角形(最简单的DP)
- 【Python实现数据可视化】创建3D柱状图
- Spring + hibernate + JPA 配置
- C++ stringstream输入方式
- 加油站都需要什么手续_农村买房过户都需要什么手续?
- resset-rem.css
- 零基础学python尹会生_编程零基础应当如何开始学习 Python?
- HDU2222【AC自动机(基础·模板)】
- 9.凤凰架构:构建可靠的大型分布式系统 --- 可靠通信
- Javadoc注释的用法
- Xmind 8思维导图使用方法
- 如何学习plc编程?(核心秘诀分享)
- 单片机学习笔记(数码管)
- secureCRT显示中文
- php代码审计命令执行,PHP代码审计笔记--命令执行漏洞