cb07a_c++_迭代器和迭代器的范围
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++_迭代器和迭代器的范围的更多相关文章
- STL_iterator迭代器(1)——迭代器的分类
一.容器迭代器 尽管C++指针也是迭代器,但用的更多的是容器迭代器.容器迭代器用法和iterdemo.cpp一样,但和将迭代器申明为指针变量不同的是,你可以使用容器类方法来获取迭代器对象.两个典型的容 ...
- Python—day13 迭代器、迭代器对象、for循环对象、生成器、枚举对象
一.迭代器 1.迭代器概念: 器:包含了多个值的容器 迭代:循环反馈(一次从容器在取出一个值) 迭代器:从装有多个值的容器在一次取出一个值 ls=[3,5,7,1,9] 遍历:被遍历的对象必须是有序容 ...
- STL迭代器及迭代器失效问题
迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代器失效.那为什么迭代器会失效呢?vector元素在内存中是顺序存储,试想:如果当前容器中已经存在了 ...
- C++: STL迭代器及迭代器失效问题
转载至:http://blog.csdn.net/wangshihui512/article/details/9791517 迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作 ...
- Python的程序结构[6] -> 迭代器/Iterator -> 迭代器浅析
迭代器 / Iteratior 目录 可迭代对象与迭代器协议 迭代器 迭代器(模拟)的建立 1 可迭代对象与迭代器协议 对于迭代器首先需要了解两个定义,迭代器协议 (Iterator Protocol ...
- python迭代器生成器-迭代器和list区别
迭代 生成 for循环遍历的原理 for循环遍历的原理就是迭代,in后面必须是可迭代对象 为什么要有迭代器 对于序列类型:字符串.列表.元组,我们可以使用索引的方式迭代取出其包含的元素.但对于字典.集 ...
- Python进阶:迭代器与迭代器切片
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- Android 迭代器 Iteraor迭代器以及foreach的使用
Iterator是一个迭代器接口,专门用来迭代各种Collection集合,包括Set集合和List集合. Java要求各种集合都提供一个iteratot()方法,该方法返回一个Iterator用于遍 ...
- python3.5-day5_迭代器_生成器_装饰器_模块
笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必 ...
随机推荐
- 第3章_关系数据库标准语言(SQL)_006_由元组关系演算到SQL Command_001_蕴含式 (其中有对EXISTS的分析)
前序的链接:元组关系演算 六. 蕴含式 ===>1. 什么是“蕴含式”===>设p.q为两个命题.复合命题“如果p,则q”称为p与q的蕴含式,记作p→q,并称p为蕴含式的前件,q为后件.定 ...
- 微软Azure IoT驱动数字化变革线上分享会(6月4号)
微软Azure IoT驱动数字化变革线上分享会(6月4号) 微软作为全球范围内IoT领域的领军者,以微软智能云Azure为基础和核心,推动包括物联网.机器学习.微服务.人工智能等在内的新技术的发展 ...
- Java IO(十七)FIleReader 和 FileWriter
Java IO(十七)FIleReader 和 FileWriter 一.介绍 FIleReader 和 FileWriter 是读写字符文件的便利类,分别继承于 InputStreamReader ...
- vue-cli4 + TS构建新项目
1. 如果你之前没有安装vue-cli,可以通过如下命令进行安装: npm install -g @vue/cli yarn global add @vue/cli 2. 创建vue项目 vue cr ...
- Rocket - debug - Periphery
https://mp.weixin.qq.com/s/uGxn-Xec0LkwdaSsCtQBvw 简单介绍Periphery的实现. 1. ExportDebugDMI/ExportDebugJTA ...
- Chisel3 - bind - PortBinding
https://mp.weixin.qq.com/s/NaInHsJgOwG03BLNF-wlxQ 介绍Module输入输出端口如何进行绑定. 1. IO() 在定义一个模块 ...
- DDD之3实体和值对象
图中是一个别墅的模型,代表实体,可以真实的看得到.那么在DDD设计方法论中,实体和值对象是什么呢? 背景 实体和值对象是领域模型中的领域对象,是组成领域模型的基础单元,一起实现实体最基本的核心领域逻辑 ...
- Java实现 LeetCode 523 连续的子数组和(ง •_•)ง
523. 连续的子数组和 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示 ...
- Java实现 LeetCode 424 替换后的最长重复字符
424. 替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意: 字 ...
- Java实现 LeetCode 9 回文数
9. 回文数 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false ...