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

习题: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 
#include 
#include 
#include 

using namespace std;

int main()
{
	vector a;
	deque b;
	list c;
	a.push_back(1);
	a.push_back(2);
	a.push_back(3);
	a.push_back(4);
	a.push_back(5);
	vector::iterator iter1 = a.begin();//指向a的一个数据
	vector::iterator inter2 = a.end();//指向最后一个的下一个。
	cout << *iter1 << endl;
	iter1++;
	cout << *iter1 << endl;
	iter1--;
	cout << *iter1 << endl << endl;

	vector::iterator first = a.begin();
	vector::iterator last = a.end();
	while (first != last)
	{
		cout << *first << endl;
		first++;
	}
	cout << endl;
	vector::iterator x = a.begin();
	vector::iterator m = x + a.size() / 2;
	cout << "中间: " << *m << endl;


	return 0;
}
/*习题9.12
习题:9.12
编写一个函数,其形参是一对迭代器和一个 int 型数值,
实现在迭代器标记的范围内寻找查找该 int 型数值的功能,
并返回一个bool结果,以指明是否找到指定数据
习题:9.13
重写程序,查找元素的值,
并返回指向找到的元素的迭代器。确保程序在要寻找的
元素不存在时也能正确工作。
习题:9.14
使用迭代器编写程序,从标准输入设备读入若干 string 对象,并将它们存储在一 个 vector
对象中,然后输出该 vector 对象中的所有元素
习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改
*/
#include 
#include 

using namespace std;

bool findInt(vector::iterator beg, 
	         vector::iterator end, int ival);

int main()
{
	vector a;
	a.push_back(2);
	a.push_back(12);
	a.push_back(9);
	a.push_back(28);

	vector::iterator k1 = a.begin();
	vector::iterator k2 = a.end();
	k1++;
	k2--;

	//在k1与k2之间查找9
	bool result = findInt(k1, k2, 9);
	
	//在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 0;
} 
//                前包括,后不包括。包括beg,不包括end
bool findInt(vector::iterator beg,
	vector::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 
#include 

using namespace std;

vector::iterator findInt(vector::iterator beg,
	vector::iterator end, int ival);

int main()
{
	int ia[] = {0,1,2,3,4,5,6};
	vector ivec(ia,ia+7);//数组的名称就是指针,所ia就是指针、
    //数组赋值给ivec向量。

	vector::iterator result= findInt(ivec.begin(),ivec.end(),5);
	if (result == ivec.end())
		cout << "没有找到!" << endl;
	else
		cout << "找到了" << endl;


	return 0;
}
//                前包括,后不包括。包括beg,不包括end
vector::iterator findInt(vector::iterator beg,
	vector::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 
#include 
#include 
using namespace std;

int main()
{
	vector svec;
	string str;
	cout << "Enter some trings(ctrl+Z to end):" << endl;

	while (cin >> str)
		svec.push_back(str);
	for (vector::iterator iter = svec.begin();
		iter != svec.end(); ++iter)
		cout << *iter << endl;
	return 0;
}
/*


习题:9.15
用 list 容器类型重写习题 9.14 得到的程序,列出改变了容器类型后要做的修改
*/

#include 
#include 
#include 
#include 
using namespace std;

int main()
{
	//vector svec;
	list slst;
	string str;
	cout << "使用lis容器操作数据" << endl;
	cout << "Enter some trings(ctrl+Z to end):" << endl;

	while (cin >> str)
		slst.push_back(str);
	for (list::iterator iter = slst.begin();
		iter != slst.end(); ++iter)
		cout << *iter << endl;
	return 0;
}

 

你可能感兴趣的:(C++)