第九章 习题9-1-习题9-10

习题9-1

(a)使用list,因为需要在任意位置插入数据;

(b)使用deque,deque是很快;

(c)vector,排序要不断调整位置,vector支持快速随机访问,不插入删除元素,只是改变顺序;

习题9-2

list<deque<int>>

习题9-3

1、begin和end必须分别指向同一容器中的元素或者是尾元素之后的尾元素之后的位置;

2、可以通过递增begin来达到end;

习题9-4

#include<iostream>
#include<vector>
using namespace std;

bool func(vector<int>::iterator begin, vector<int>::iterator end, int a);
void main()
{
	vector<int> vec = { 1,2,3,4,5,6,10,13,15 };
	cout.setf(ios_base::boolalpha);               //设置输出bool型,不是int型数字;
	cout<< func(vec.begin(),vec.end(), 4) << endl;
}
bool func(vector<int>::iterator begin, vector<int>::iterator end,int a)
{
	int k = 0;
	while (begin != end)
	{
		if (*begin != a)
			++begin;
		else
			return true;
	}
	return false;
}

习题9-5

#include<iostream>
#include<vector>
using namespace std;
vector<int>::iterator func(vector<int>::iterator begin, vector<int>::iterator end, int a);
void main()
{
	vector<int> vec = { 1,2,3,4,5,6,10,13,15 };
	if (func(vec.begin(), vec.end(), 8) != vec.end())
		cout << "we found it" << endl;
	else
		cout << "we did not find it" << endl;
}
vector<int>::iterator func(vector<int>::iterator begin, vector<int>::iterator end,int a)
{
	int k = 0;
	while (begin != end)
	{
		if (*begin != a)
			++begin;
		else
			return begin;
	}
	return end;
}

习题9-6

list容器的迭代器没有"<"运算符操作;P99页3.4.2迭代器运算指出了vector,string有该运算符,P963.4.1标准容器迭代器运算符中则没有。

习题9-7

应该使用vector<int>::iterator类型;

习题9-8

读操作:list<string>::iterator或者list<string>::const_iterator

写操作:list<string>::iterator

习题9-9

begin返回的是iterator,可以读写所指向的元素;cbegin返回的是const_iterator;

习题9-10

(1)vector<int>::iterator;

(2)vector<int>::const_iterator;

(3)vector<int>::const_iterator;

(4)vector<int>::const_iterator;

s书中很明白的写道“只有对一个const对象调用这些函数时,才会得到一个const版本”,带c开头的版本则是返回反向const迭代器;

iterater看做指针的话,const_iterator指的是顶层const指针,即const int *;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值