[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的变量,但是都不能通过...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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