cb07a_c++_迭代器和迭代器的范围
c++primer第4版
https://www.cnblogs.com/txwtech/p/12309989.html
--每一种容器都有自己的迭代器
--所有的迭代器接口都是一样的
--在整个标准库中,经常使用形参作为一对迭代器的构造函数
--常用的迭代器操作
*iter,++iter,--iter,iter1=iter2,iter1!=iter2
--vector和deque容器的迭代器的额外操作,数组操作。可如下操作:
inter+n,iter-n,>,>=,<,<= (vector和deque容器可操作这些符号)

/////txwtech///

--迭代器的范围
begin/end,first/last
--使迭代器失效的容器操作
关联容器:set/map

https://blog.csdn.net/txwtech/article/details/104371051

https://www.cnblogs.com/txwtech/p/12325209.html

习题:9.12
编写一个函数,其形参是一对迭代器和一个 int 型数值,
实现在迭代器标记的范围内寻找查找该 int 型数值的功能,
并返回一个bool结果,以指明是否找到指定数据
习题:9.13
重写程序,查找元素的值,
并返回指向找到的元素的迭代器。确保程序在要寻找的
元素不存在时也能正确工作。
习题:9.14
使用迭代器编写程序,从标准输入设备读入若干 string 对象,并将它们存储在一 个 vector
对象中,然后输出该 vector 对象中的所有元素
习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改

 /*cb07a_c++_迭代器和迭代器的范围
c++primer第4版
https://www.cnblogs.com/txwtech/p/12309989.html
--每一种容器都有自己的迭代器
--所有的迭代器接口都是一样的
--在整个标准库中,经常使用形参作为一对迭代器的构造函数
--常用的迭代器操作
*iter,++iter,--iter,iter1=iter2,iter1!=iter2
--vector和deque容器的迭代器的额外操作,数组操作。可如下操作:
inter+n,iter-n,>,>=,<,<= (vector和deque容器可操作这些符号) --迭代器的范围
begin/end,first/last
--使迭代器失效的容器操作
关联容器:set/map 习题:9.12
编写一个函数,其形参是一对迭代器和一个 int 型数值,
实现在迭代器标记的范围内寻找查找该 int 型数值的功能,
并返回一个bool结果,以指明是否找到指定数据
习题:9.13
重写程序,查找元素的值,
并返回指向找到的元素的迭代器。确保程序在要寻找的
元素不存在时也能正确工作。
习题:9.14
使用迭代器编写程序,从标准输入设备读入若干 string 对象,并将它们存储在一 个 vector
对象中,然后输出该 vector 对象中的所有元素
习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改 */
#include <iostream>
#include <deque>
#include <vector>
#include <list> using namespace std; int main()
{
vector<int> a;
deque<int> b;
list<int> c;
a.push_back();
a.push_back();
a.push_back();
a.push_back();
a.push_back();
vector<int>::iterator iter1 = a.begin();//指向a的一个数据
vector<int>::iterator inter2 = a.end();//指向最后一个的下一个。
cout << *iter1 << endl;
iter1++;
cout << *iter1 << endl;
iter1--;
cout << *iter1 << endl << endl; vector<int>::iterator first = a.begin();
vector<int>::iterator last = a.end();
while (first != last)
{
cout << *first << endl;
first++;
}
cout << endl;
vector<int>::iterator x = a.begin();
vector<int>::iterator m = x + a.size() / ;
cout << "中间: " << *m << endl; return ;
}
 /*习题9.12
习题:9.12
编写一个函数,其形参是一对迭代器和一个 int 型数值,
实现在迭代器标记的范围内寻找查找该 int 型数值的功能,
并返回一个bool结果,以指明是否找到指定数据
习题:9.13
重写程序,查找元素的值,
并返回指向找到的元素的迭代器。确保程序在要寻找的
元素不存在时也能正确工作。
习题:9.14
使用迭代器编写程序,从标准输入设备读入若干 string 对象,并将它们存储在一 个 vector
对象中,然后输出该 vector 对象中的所有元素
习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改
*/
#include <iostream>
#include <vector> using namespace std; bool findInt(vector<int>::iterator beg,
vector<int>::iterator end, int ival); int main()
{
vector<int> a;
a.push_back();
a.push_back();
a.push_back();
a.push_back(); vector<int>::iterator k1 = a.begin();
vector<int>::iterator k2 = a.end();
k1++;
k2--; //在k1与k2之间查找9
bool result = findInt(k1, k2, ); //在a.begin()与a.end()之间查找28
//bool result = findInt(a.begin(),a.end(),28);
if (true == result)
cout << "find value" << endl;
else
cout << "not find " << endl; return ;
}
// 前包括,后不包括。包括beg,不包括end
bool findInt(vector<int>::iterator beg,
vector<int>::iterator end, int ival)
{
while (beg != end)
{
if (*beg == ival)
break;
else
++beg;
}
if (beg != end)
return true;
else
return false;
}
 /*习题9.13

 习题:9.13
重写程序,查找元素的值,
并返回指向找到的元素的迭代器。确保程序在要寻找的
元素不存在时也能正确工作。 */
#include <iostream>
#include <vector> using namespace std; vector<int>::iterator findInt(vector<int>::iterator beg,
vector<int>::iterator end, int ival); int main()
{
int ia[] = {,,,,,,};
vector<int> ivec(ia,ia+);//数组的名称就是指针,所ia就是指针、
//数组赋值给ivec向量。 vector<int>::iterator result= findInt(ivec.begin(),ivec.end(),);
if (result == ivec.end())
cout << "没有找到!" << endl;
else
cout << "找到了" << endl; return ;
}
// 前包括,后不包括。包括beg,不包括end
vector<int>::iterator findInt(vector<int>::iterator beg,
vector<int>::iterator end, int ival)
{
while (beg != end)
{
if (*beg == ival)
break;
else
++beg;
}
return beg;
}
 /*

 习题:9.14
使用迭代器编写程序,从标准输入设备读入若干 string 对象,并将它们存储在一 个 vector
对象中,然后输出该 vector 对象中的所有元素
习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改
*/ #include <iostream>
#include <vector>
#include <string>
using namespace std; int main()
{
vector<string> svec;
string str;
cout << "Enter some trings(ctrl+Z to end):" << endl; while (cin >> str)
svec.push_back(str);
for (vector<string>::iterator iter = svec.begin();
iter != svec.end(); ++iter)
cout << *iter << endl;
return ;
}
 /*

 习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改
*/ #include <iostream>
#include <vector>
#include <string>
#include <list>
using namespace std; int main()
{
//vector<string> svec;
list<string> slst;
string str;
cout << "使用lis容器操作数据" << endl;
cout << "Enter some trings(ctrl+Z to end):" << endl; while (cin >> str)
slst.push_back(str);
for (list<string>::iterator iter = slst.begin();
iter != slst.end(); ++iter)
cout << *iter << endl;
return ;
}

cb07a_c++_迭代器和迭代器的范围的更多相关文章

  1. STL_iterator迭代器(1)——迭代器的分类

    一.容器迭代器 尽管C++指针也是迭代器,但用的更多的是容器迭代器.容器迭代器用法和iterdemo.cpp一样,但和将迭代器申明为指针变量不同的是,你可以使用容器类方法来获取迭代器对象.两个典型的容 ...

  2. Python—day13 迭代器、迭代器对象、for循环对象、生成器、枚举对象

    一.迭代器 1.迭代器概念: 器:包含了多个值的容器 迭代:循环反馈(一次从容器在取出一个值) 迭代器:从装有多个值的容器在一次取出一个值 ls=[3,5,7,1,9] 遍历:被遍历的对象必须是有序容 ...

  3. STL迭代器及迭代器失效问题

    迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代器失效.那为什么迭代器会失效呢?vector元素在内存中是顺序存储,试想:如果当前容器中已经存在了 ...

  4. C++: STL迭代器及迭代器失效问题

    转载至:http://blog.csdn.net/wangshihui512/article/details/9791517 迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作 ...

  5. Python的程序结构[6] -> 迭代器/Iterator -> 迭代器浅析

    迭代器 / Iteratior 目录 可迭代对象与迭代器协议 迭代器 迭代器(模拟)的建立 1 可迭代对象与迭代器协议 对于迭代器首先需要了解两个定义,迭代器协议 (Iterator Protocol ...

  6. python迭代器生成器-迭代器和list区别

    迭代 生成 for循环遍历的原理 for循环遍历的原理就是迭代,in后面必须是可迭代对象 为什么要有迭代器 对于序列类型:字符串.列表.元组,我们可以使用索引的方式迭代取出其包含的元素.但对于字典.集 ...

  7. Python进阶:迭代器与迭代器切片

    2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...

  8. Android 迭代器 Iteraor迭代器以及foreach的使用

    Iterator是一个迭代器接口,专门用来迭代各种Collection集合,包括Set集合和List集合. Java要求各种集合都提供一个iteratot()方法,该方法返回一个Iterator用于遍 ...

  9. python3.5-day5_迭代器_生成器_装饰器_模块

    笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必 ...

随机推荐

  1. Verilog语言中的系统任务和系统函数

    Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在Testbench仿真中使用的,使我们更方便的进行验证. `timescal ...

  2. 手把手教你Windows Linux双系统的安装与卸载

    作者:-叶丶知秋 链接:https://blog.csdn.net/fanxueya1322/article/details/90205143 转载请保留出处 良许前言: 后台突然有很多小伙伴留言想看 ...

  3. 【Ubuntu】快捷键

    版本:Ubuntu18.04 1. 终端(terminal ) alt + ctrl + t # 打开终端 shift + shift + t # 新建终端标签页 ctrl + c # 强制停止程序运 ...

  4. [JavaWeb基础] 029.OGNL表达式介绍

    1.OGNL概述 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对 ...

  5. Java IO(五)字节流 FileInputStream 和 FileOutputStream

    Java IO(五)字节流 FileInputStream 和 FileOutputStream 一.介绍 字节流 InputStream 和 OutputStream 是字节输入流和字节输出流的超类 ...

  6. Windows平台搭建Git服务教程详解

    引言 软件企业的核心就是代码,如何确保代码的安全?如何在团队开发中协同工作?为解决这些问题,我们需要采用相应的管理工具来满足管理的需求.探长从最初的VSS.SVN.TFS到现在的Git存储一路走来,感 ...

  7. 【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题---WebApi环境搭建运行发布部署篇

    欢迎大家阅读<朝夕Net社区技术专刊>第1期 原文是我在知乎发表的,现在在这里分享! 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为首 ...

  8. 实现一个字符串匹配算法,从字符串 H 中,查找 是否存在字符串 Y ,若是存在返回所在位置的索引,不存在返回 -1(不基于indexOf/includes方法)

    /** 1.循环原始字符串的每一项,让每一项从当前位置向后截取 H.length 个字符, 然后和 Y 进行比较,如果不一样,继续循环:如果一样返回当前索引即可 **/ function myInde ...

  9. 容器技术之Dockerfile(二)

    前文我们聊到了什么是dockerfile,它的主要作用以及dockerfile的一些基本指令的使用方法,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13019 ...

  10. Java实现 LeetCode 805 数组的均值分割 (DFS+分析题)

    805. 数组的均值分割 给定的整数数组 A ,我们要将 A数组 中的每个元素移动到 B数组 或者 C数组中.(B数组和C数组在开始的时候都为空) 返回true ,当且仅当在我们的完成这样的移动后,可 ...