《c++ primer, 5E》

第94页到第99页,笔记:

1、迭代器(iterator):一种比下标访问更通用的访问容器中元素的机制

(并不是所有标准库容器都支持下标访问,<运算符)

我们认定某个类型是迭代器,当且仅当它支持一套操作,

这套操作使得我们能访问容器的元素或者从某个元素移动到另外一个元素。

2、有迭代器的类型都拥有名为begin和end成员

3、一般来说,我们不在意迭代器的准确类型到底是什么

4、迭代器支持的一些运算。(与指针类似,例如iter->mem:解引用iter并获取该元素

名为mem的成员,等价于(*iter).mem)

5、养成使用迭代器和!=的习惯(而非<运算符),就不用太在意用的到底是哪种容器类型。

6、如果对象只需读操作而无须写操作的话最好使用常量类型(比如 const_iterator)。可以通过cbegin和cend返回该类型迭代器。

7、vector对象的一个限制:任何一种可能改变vector对象容量的操作,比如push_back,都会使该vector对象的迭代器失效。

8、小结:重点掌握利用迭代器遍历元素的方法,结合解引用和成员访问操作(*it以及it->)

课后练习:

练习3.21

int:

#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
int main()
{
// 定义一个vector对象
vector<int> v5( ,);
// 输出vector对象的容量和具体内容
int size = v5.end() - v5.begin();
cout << size << endl;
// 使用迭代器和!=遍历元素
for(auto it = v5.begin(); it != v5.end(); ++it){
cout << *it << endl;
}
return ;
}

string:

#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
#include<string>
using std::string;
int main()
{
// 定义一个vector对象
vector<string> v5( , "hi");
// 输出vector对象的容量和具体内容
int size = v5.end() - v5.begin();
cout << size << endl;
// 使用迭代器和!=遍历元素
for(auto it = v5.begin(); it != v5.end(); ++it){
cout << *it << endl;
}
return ;
}

练习3.22

#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
#include<string>
using std::string;
int main()
{
// 定义一个字符串向量
vector<string> text{"Hello", "", "world!"};
// 把text的第一段全都改成大写形式,然后再输出它
for(auto it = text.begin();
it != text.end() && !(*it).empty(); ++it){
for(auto &ch: *it){
ch = toupper(ch);
}
cout << *it << endl;
}
return ;
}

练习3.23

#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
#include<string>
using std::string;
int main()
{
// 创建一个含有10个整数的vector对象
vector<int> ivec( , );
// 使用迭代器将所有元素的值都变成原来的两倍。输出vector对象的内容
for(auto it = ivec.begin(); it != ivec.end(); ++it){
*it *= ;
cout << *it << endl;
}
return ;
}

遇到的问题:

1、const_iterator哪里和常量指针差不多了?

c++第十五天的更多相关文章

  1. 我的MYSQL学习心得(十五) 日志

    我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  2. Bootstrap <基础二十五>警告(Alerts)

    警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...

  3. Bootstrap<基础十五> 输入框组

    Bootstrap 支持的另一个特性,输入框组.输入框组扩展自 表单控件.使用输入框组,可以很容易地向基于文本的输入框添加作为前缀和后缀的文本或按钮. 通过向输入域添加前缀和后缀的内容,您可以向用户输 ...

  4. 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

    解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密

    前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的“开发者中心”,我们可以看到U ...

  6. 十五个常用的jquery代码段【转】

    好的文章顶一个 回到顶部按钮 通过使用 jQuery 中的 animate 和 scrollTop 方法,你无需插件便可创建一个简单地回到顶部动画: 1 // Back to top 2 $('a.t ...

  7. 十五个常用的jquery代码段

    十五个常用的jquery代码段 回到顶部按钮 通过使用 jQuery 中的 animate 和 scrollTop 方法,你无需插件便可创建一个简单地回到顶部动画: 1 // Back to top ...

  8. 淘宝(阿里百川)手机客户端开发日记第十五篇 JSON解析(四)

    解析一个从淘宝传递的JSON (大家如有兴趣可以测试下):{ "tae_item_detail_get_response": { "data": { " ...

  9. [COJ0985]WZJ的数据结构(负十五)

    [COJ0985]WZJ的数据结构(负十五) 试题描述 CHX有一个问题想问问大家.给你一个长度为N的数列A,请你找到两个位置L,R,使得A[L].A[L+1].…….A[R]中没有重复的数,输出R- ...

  10. 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]

    无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...

随机推荐

  1. HTML表单的运用

    没学习HTML表单之前,觉得文本框.密码框.隐藏域.单选按钮.复选框等这些在平常页面常见到的表单不起眼,挺简单,到自己用代码区实现将它们灵活串联运用起来,才发现一点都不简单.看着容易,自己操作还是出现 ...

  2. Windows 10 下 PostgreSQL 生成 UUID(Guid)

    最近在Windows 10 下安装了 PostgreSQL(postgresql-9.6.3-1-windows.exe),在学习过程中,发现PostgreSQL 支持UUID(Guid)类型,但是却 ...

  3. 判断一个正整数是否是2的N次方的简洁算法及其证明

    在写代码时遇到了“判断一个正整数是否是2的N次方”的问题,不想调用 java.lang 的 Math 类库进行浮点运算,觉得转换为浮点不是个好办法. 遂在网上搜索了一下,发现有人列出来好几种写法,列举 ...

  4. Java 构造函数(抽象类中的构造函数) 和 加载

    博客分类: 面向对象设计的原则 与 概念   1. Java 的构造函数 与初始化块: a. 抽象类的构造函数 若果在父类中(也就是抽象类)中显示的写了有参数的构造函数,在子类是就必须写一个构造函数来 ...

  5. POJ 1700 - Crossing River

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13982   Accepted: 5349 Description A gr ...

  6. 11.28JavaScript学习

    JavaScript输出JavaScript通常用于操作HTML元素,如果要访问某个HTML元素,使用document.getElementById(id)方法,使用id属性标识HTML元素 文档输出 ...

  7. CCCC 排座位 图着色问题

    1排座位:https://www.patest.cn/contests/gplt/L2-010 2图着色问题 https://www.patest.cn/contests/gplt/L2-023 建图 ...

  8. Git添加Gitee远程仓库

    1.使用IDEA初始化仓库,并提交代码 2.使用 git remote add origin https://gitee.com/你的码云用户名/XXXX //添加远程仓库 3.使用 git pull ...

  9. PHPExcel exception: “Could not close zip file … ”报错

    Q: PHPExcel exception: “Could not close zip file … ” A:目录没有写权限,chmod 对$phpExcel->save($dir)中报错路径设 ...

  10. This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in

    地址:http://stackoverflow.com/questions/18852983/eclipse-reports-rendering-library-more-recent-than-ad ...