[C++学习] c++ primer 习题3.18

原创 2012年03月28日 18:47:17

值得注意的地方有以下几点:

 

1. iterator 一旦指向某个vector,

那么这个iterator 的范围只能在 [begin(),end()]之间.

如果超过了这个区间 (即使没有取到  it当前的值,只要 it本身超过了这个区间),

就会在运行时报错.

 

测试见第2段代码.

 

#include<iostream>
#include<string>
#include<vector>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;

int main()
{
	vector<int> vecInt(10,3);

	cout << "Before modify:\n" << endl;
	for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
	{
		cout << *it << endl;
	}

	for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
	{
		*it = *it*2;
	}

	cout << "After modify:\n" << endl;
	for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
	{
		cout << *it << endl;
	}
	return 0;
}


 

 

#include<iostream>
#include<string>
#include<vector>using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{
 vector<int> vecInt(10,3); cout << "Before modify:\n" << endl;
 for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
 {
  cout << *it << endl;
 } for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
 {
  *it = *it*2;
 } cout << "After modify:\n" << endl;
 for(vector<int>::iterator it = vecInt.begin();it<vecInt.end();++it)
 {
  cout << *it << endl;
 } vector<int>::iterator it = vecInt.begin();
 it -= 1;         // here it mast be in [begin(),end()], -=1 will error (cause < begin()) if( it==vecInt.end())
 {
  cout <<" == "<<endl;
 } return 0;
}


 

相关文章推荐

[c++学习] C++ primer 第4版 习题4.20 4.21 常量指针 和 指针常量

这个习题需要注意以下知识点:   1. const int * p; 我们暂时称它为 "常量指针",即指向常量的指针. 他可以指向const 常量,也可以指向非 const的变量,但是都不能通过...

C++学习之路C++Primer学习笔记(一)

1.main()函数返回值必须是int,用来指示状态,返回值0表明成功,非0的返回值的含义由系统定义,通常用来指出错误类型。 2.一种类型定义了:数据元素的内容,这类数据上可以进行的运算。 3.术...

c++ primer(第五版)学习笔记及习题答案代码版(第七章)类

笔记较为零散,都是自己不熟悉的知识点。 习题答案至于一个.cc 中,需要演示某一题直接修改 #define NUM***, 如运行7.23题为#define NUM723; chapter 7 ...
  • refuil
  • refuil
  • 2016年05月14日 00:19
  • 653

c++ primer(第五版)学习笔记及习题答案代码版(第一章)

笔记较为零散,都是自己不熟悉的知识点。 习题答案至于一个.cc中,需要运行某一题直接修改#define NUM**, 如运行第一题为#define NUM11,题1.24定义为NUM124 chapt...
  • refuil
  • refuil
  • 2016年04月23日 15:26
  • 668

C++ primer plus(第六版)学习笔记、习题答案(2)

C++primer plus 第6版笔记和答案

c++ primer(第五版)学习笔记及习题答案代码版(第二章)

chapter 2 1、当我们把一个超出其取值范围的值赋给一个指定类型的对象时,结果取决于这种类型是signed还是unsigned的。        A 对于unsigned类型,编译器必须调整越界...
  • refuil
  • refuil
  • 2016年04月24日 23:11
  • 949

c++ primer(第五版)学习笔记及习题答案代码版(第四章)表达式

笔记较为零散,都是自己不熟悉的知识点。 习题答案至于一个.cc 中,需要演示某一题直接修改 #define NUM**, 如运行4.23题为#define NUM423; chapter 4 1...
  • refuil
  • refuil
  • 2016年05月04日 09:39
  • 686

c++ primer(第五版)学习笔记及习题答案代码版(第十二章)动态内存与智能指针

笔记较为零散,都是自己不熟悉的知识点。 习题答案置于一个 .h 和.cc 中,需要演示某一题直接修改 #define NUM****, 如运行12.22题为#define NUM1222; cha...
  • refuil
  • refuil
  • 2016年05月26日 22:39
  • 514

c++ primer(第五版)学习笔记及习题答案代码版(第十三章)拷贝控制

笔记较为零散,都是自己不熟悉的知识点。 习题答案至于一个.h 和.cc 中,需要演示某一题直接修改 #define NUM****, 如运行13.30题为#define NUM1330; chapt...
  • refuil
  • refuil
  • 2016年05月31日 17:50
  • 1360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[C++学习] c++ primer 习题3.18
举报原因:
原因补充:

(最多只允许输入30个字)