《C++ primer》--第11章

习题11.1 algorithm头文件定义了一个count的函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果。编写程序读取一系列int型数据,并将它们存储到vector对象中,然后统计某个指定的值出现了多少次。

//读取一系列int数据,并将它们存储到vector对象中,
//然后使用algorithm头文件中定义的名为count的函数,
//统计某个指定的值出现了多少次
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int ival , searchValue;
	vector<int> ivec;

	//读入int型数据并存储到vector对象中,直至遇到文件结束符
	cout<<"Enter some integers(Ctrl+Z to end): "<<endl;
	while(cin >> ival)
		ivec.push_back(ival);

	cin.clear(); // 使输入流重新有效

	//读入欲统计其出现次数的int值
	cout<<"Enter an integer you want to search: "<<endl;
	cin>>searchValue;

	//使用count函数统计该值出现的次数并输出结果
	cout<<count(ivec.begin() , ivec.end() , searchValue)
		<<"  elements in the vector have value "
		<<searchValue<<endl;

	return 0;
}

习题11.3 用accumulate统计vector<int>容器对象中的元素之和。

解答:

 1 //读取一系列int型数据,并将它们存储到vector对象中,
 2 //然后使用algorithm头文件中定义的名为accumulate的函数,
 3 //统计vector对象中的元素之和
 4 #include<iostream>
 5 #include<vector>
 6 #include<numeric>
 7 using namespace std;
 8 
 9 int main()
10 {
11     int ival;
12     vector<int> ivec;
13 
14     //读入int型数据并存储到vector对象中,直至遇到文件结束符
15     cout<<"Enter some integers(Ctrl+z to end): "<<endl;
16     while(cin >> ival)
17         ivec.push_back(ival);
18 
19     //使用accumulate函数统计vector对象中的元素之和并输出结果
20     cout<<"summation of elements in the vector: "
21         <<accumulate(ivec.begin() , ivec.end() , 0)  //统计vector对象中的元素之和
22         <<endl;
23 
24     return 0;
25 }

11.13 解释三种插入迭代器的区别。

解答:

三种插入迭代器的区别在于插入元素的位置不同:

  • back_inserter,使用push_back实现在容器末端插入。
  • front_inserter,使用push_front实现在容器前段插入。
  • inserter,使用insert实现在容器中指定位置插入。

因此,除了所关联的容器外,inserter还带有第二个实参——指向插入起始位置的迭代器。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java学习

java每日一练(2017/8/11)

(单选题) 1、关于下面的程序Test.java说法正确的是( )。 publicclass Test { staticString x="1"; sta...

2776
来自专栏小樱的经验随笔

记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)

这一串代码描述是这样子,我们要绕过A-Za-z0-9这些常规数字、字母字符串的传参,将非字母、数字的字符经过各种变换,最后能构造出 a-z 中任意一个字符,并且...

1382
来自专栏Java帮帮-微信公众号-技术文章全总结

shell编程基础入门

shell编程基础入门 文章最后有下载shell学习指南电子书链接。 1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bi...

3334
来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则

4615
来自专栏AzMark

Python 学习笔记之类与实例

类 (class) 封装一组相关数据,使之成为一个整体,并使用一种方法持续展示和维护。

441
来自专栏乐百川的学习频道

Python学习笔记 输入输出

str和repr内置函数 在介绍Python的输入输出之前,我们先来介绍两个内置函数,str()和repr(),它们都用来输出对象的字符串形式。不过它们之间有一...

2738
来自专栏iOS开发攻城狮的集散地

浅谈iOS内存管理机制

2299
来自专栏WD学习记录

基本一

1.extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行...

1505
来自专栏liulun

Nim教程【十五】【完结】

模版 模版是Nim语言中的抽象语法树,它是一种简单的替换机制,在编译期被处理 这个特性使Nim语言可以和C语言很好的运行在一起 像调用一个方法一样调用一个模版 ...

2228
来自专栏散尽浮华

python常用知识梳理

接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理: 1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ ...

2795

扫码关注云+社区