C++泛型算法中的accumulate

原创 2015年11月20日 11:41:11

一些算法只会读取其输入范围内的元素,而从不改变元素。accumulate算法就是属于这种只读算法。它定义在头文件numeric中。accumulate函数接受三个参数,前两个指出了需要求和的元素的范围,第三个参数是和的初始值。假定vec是一个整数序列,则:

int sum=accumulate(vec.cbegin(),vec.cend(),0);

这条语句将sum设置为vec中元素的和,和的初始值为0,我们来写个程序验证一下:

#include<iostream>
#include<vector>
#include<numeric>
using namespace std;
int main()
{
	vector<int>v;
	int temp;
	while (cin >> temp)
	{
		v.push_back(temp);
	}
	int sum = accumulate(v.cbegin(), v.cend(), 0);
	cout << sum << endl;
	system("pause");
	return 0;
}
我们来看下结果:


我们向vector中输入1,2,3,4,5,运行的结果是15.

accumulate将第三个参数作为求和起点,这蕴含着一个编程假定:将元素类型加到和的类型上的操作必须是可行的。即:序列中的类型必须与第三个采纳数匹配,或者能够进行转换为第三个参数的类型。









一些C++ STL泛型算法整理

泛型算法本身不会执行容器的的操作,他们只会运行于迭代器上,执行迭代器的操作。所以算法永远不会改变底层容器的大小,但可能改变容器中元素的值,也可能在容器中移动元素,但永远不会直接添加和删除元素。但标准库...
  • yibo_ge
  • yibo_ge
  • 2016年04月04日 22:04
  • 311

C++语法基础--泛型算法(generic algorithm)--只读算法accumulate(),find_first_of(),count(),count_if()

注:泛型算法实在太多,太繁杂,全都掌握也不现实,也没有必要。所以暂时只研究一些常用的算法。  1.只读算法   *accumulate(在numeric头文件中定义)    Computes th...

c++ primer 泛型算法 经典

  • 2009年08月08日 08:47
  • 7KB
  • 下载

《c++ primer》第10章 泛型算法 学习笔记

概述:大多数算法都定义在头文件#include,标准库还在#include定义了一组数值泛型算法。 泛型算法本身不会执行容器操作,它们只会运行在迭代器之上,执行迭代器的操作 结论:算法永远不会改变底层...

[C++ 面试基础知识总结] 泛型算法

[C++ 面试基础知识总结] 泛型算法 参考书籍:《C++ Primer》 目录 C 面试基础知识总结 泛型算法 目录 基础泛型算法 只读算法 写容器算法 重排容器元素算法 定制操作 向...

C++沉思录读书笔记(17章)-见识泛型算法的威力

在这回的学习中,我们能体会到泛型算法的威力,这是通过模板(抽象)实现的 泛型算法是一种用对其所用的数据结构进行尽可能少的假设的方法表达的算法,模板使得泛型(genericity)更为容易 ...

c++ primer学习(八) 泛型算法

c++之所以叫c++,就是因为他相对于c有两个提升,一个是面向对象,一个是泛型。虽然泛型主要讲的是模板,但是泛型算法确实给我们了极大的便利。 这些泛型算法一般都是定义在algorithm库中的(绝大多...

C++ 对bitset使用泛型算法

泛型算法是C++的一大特色,而bitset

c++ algorithm 泛型算法的方法实现原型

// algorithm standard header #pragma once #ifndef _ALGORITHM_ #define _ALGORITHM_ #ifndef RC_INV...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++泛型算法中的accumulate
举报原因:
原因补充:

(最多只允许输入30个字)