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;
}