C++Primer第五版 第十章习题答案(1~10)

1:知识点:泛型算法:算法是因为其实现了一些经典算法的公共接口,排序和搜索。泛型是因为他们可以作用于不同类型的元素和多种容器类型甚至是内置数组。故称泛型算法

知识点2:基本上都定义在algorithm和numeric两个头文件中

知识点3:这些算法一般情况下只作用于迭代器之上,不对容器进行直接操作

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

int main(int argc, char**argv)
{
	int a[10] = {0,1,2,5,4,5,4,5,4,5};
	vector vec(a,a+10);
	int value = 5;
	cout<

2:知识点:所谓泛型算法就是作用于容器和元素上面的一些操作的合集,在实际情况中要善于使用

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

int main(int argc, char**argv)
{
	string a[10] = {"ds","das","123","123","123","123","123","123","123","123"};
	list list1(a,a+10);
	string value = "123";
	cout<<"字符串“"<


3:知识点:标准库基本上都是对一个范围内的容器进行操作,所以参数中总会有两个表示范围的迭代器

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

int main(int argc, char**argv)
{
	int a[10] = {0,1,2,5,4,5,4,5,4,5};
	vector vec(a,a+10);
	cout<<"元素之和为:"<

4:将初值设定为0,表明返回值为int类型,使用之后,会将double转换为int,损失精度


5:一切正常,但是C风格字符串的比较最好还是利用strcmp()


6:知识点1:用一个单一迭代器表示第二个序列的算法都假定第二个序列和第一个序列等长,如果实际中不等长,程序会出现错误

知识点2:fill()算法的使用必须保证容器本身有足够的大小

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

int main(int argc, char**argv)
{
	int a[10] = {0,1,2,5,4,5,4,5,4,5};
	vector vec(a,a+10);
	cout<<"修改前:";
	for(int i = 0; i<10 ;++i)
	{
		cout<


7:

(a):lst和vec之间的大小未保证相同,vec.resize(lst.size)

(b):reverse是改变容器容量的,并没有改变其大小,用resize()


8:算法只是产生了一个插入迭代器,然后使用这个迭代器进行插入操作。


9:

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

void elimDups(vector &s)
{
	cout<<"排序前:";
	for (int i = 0; i::iterator str = unique(s.begin(),s.end());//unique排序
	for (int i = 0; i s(a,a+10);
	elimDups(s);

	return 0;
}


10:因为这些算法只作用于迭代器,而不直接对容器进行操作.P343页note


本阶段所学到的一些泛型算法:find()搜索,accmulate()求和,equal()相等判断,fill()、fill_n()赋值,back_insert()插入操作,copy()拷贝,sort()排序,unique()重排并消重复



你可能感兴趣的:(【C++Primer习题】,C++Primer,第五版习题答案详解)