C++primer 9.2.1节练习

练习9.3

迭代器begin和end必须指向相同的容器,end可以与begin指向相同的位置,但不能指向begin之前的位置;

练习9.4

 1 #include <iostream>
 2 #include <fstream>
 3 #include <sstream>
 4 #include <vector>
 5 #include <iterator>
 6 
 7 using namespace std;
 8 
 9 bool checkValue(vector<int>::iterator it, vector<int>::iterator it1, int a);
10 
11 int main()
12 {
13     vector<int> num{ 1,2,3,4,5,6 };
14     cout << checkValue(num.begin(), num.end(), 7) << endl;
15     system("pause");
16     return 0;
17 }
18 
19 bool checkValue(vector<int>::iterator it, vector<int>::iterator it1, int a)
20 {
21     while (it != it1)
22     {
23         if (*it == a)
24             return true;
25         else
26             ++(it);
27     }
28     return false;
29 }

练习9.5

 1 #include <iostream>
 2 #include <fstream>
 3 #include <sstream>
 4 #include <vector>
 5 #include <iterator>
 6 
 7 using namespace std;
 8 
 9 const vector<int>::iterator *checkValue (vector<int>::iterator it, vector<int>::iterator it1, int a);
10 
11 int main()
12 {
13     vector<int> num{ 1,2,3,4,5,6 };
14     cout << (checkValue(num.begin(), num.end(), 7)) << endl;
15     system("pause");
16     return 0;
17 }
18 
19  const vector<int>::iterator *checkValue (vector<int>::iterator it, vector<int>::iterator it1, int a)
20 {
21     while (it != it1)
22     {
23         try
24         {
25             if (*it == a)
26                 return &it;
27             else
28                 ++(it);
29             if (it == it1)
30                 throw runtime_error("error");
31         }
32         catch (runtime_error err) {
33             cout << err.what() << endl;
34         }
35     }
36     return &it1;
37 }

利用抛出异常的方法来处理未找到定值的情况;

练习9.6

迭代器支持的算术运算不能用于list容器,因为list容器不是按照顺序存储的,他是个双向链表;

改成while(iter1 != iter2)

转载于:https://www.cnblogs.com/wuyinfenghappy/p/7326968.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值