《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. 慕课网,vue高仿饿了吗ASP源码视频笔记

    1.源码笔记 我的源码+笔记(很重要):http://pan.baidu.com/s/1geI4i2Z 感谢麦子学院项目相关视频 2.参考资料 Vue.js官网(https://vuejs.org.c ...

  2. 这个代码给所有带有name属性的链接加了一个背景色

    jQuery起点教程之使用选择器和事件jQuery提供两种方式来选择html的elements: 第一种是用CSS和Xpath选择器联合起来形成一个字符串来传送到jQuery的构造器(如:$(&quo ...

  3. hive体系结构

    1.什么是hive Hive是一个基于Hadoop的数据仓库,可以将结构化数据映射成一张表,并提供类SQL的功能,最初由Facebook提供,使用HQL作为查询接口.HDFS作为存储底层.mapRed ...

  4. Myers–Briggs_Type_Indicator 迈尔斯布里格斯类型指标(MBTI)

    Myers–Briggs Type Indicator - Wikipedia https://en.wikipedia.org/wiki/Myers%E2%80%93Briggs_Type_Indi ...

  5. svm核函数的理解和选择

    https://blog.csdn.net/leonis_v/article/details/50688766 特征空间的隐式映射:核函数    咱们首先给出核函数的来头:在上文中,我们已经了解到了S ...

  6. HTML标签_head标签

    HTML标签分为两种,自闭合标签和主动闭合标签:没有另一半 自动闭合标签,有另一半叫主动闭合标签. 自动闭合标签,只有开头没有结尾,即没有另一半:如<meta charset="UTF ...

  7. mysql全局唯一ID生成方案(二)

    MySQL数据表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都可以用这个ID唯一确定: 随着数据的不断扩张,为了提高数据库查询性 ...

  8. ubuntu环境下快速搭建开发环境

    接触ubuntu已经半年了,虽然游戏啊qq啊在linux下配置稍微麻烦一些,但是作为开发环境,ubuntu真的是好东西,无论是c啊还是php and etc 看到官网上文档开发环境建议wamp,如果是 ...

  9. 便于理解mysql内幕的各种逻辑图组

    便于理解mysql内幕的各种逻辑图组 http://blog.sina.com.cn/s/blog_445e807b0101ggtl.html 以下是个人一直以来从网络等各种途径收集到的一些对理解my ...

  10. 图片预览-兼容IE

    直接贴代码吧: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...