STL中accumulate函数的使用

转载 2011年01月12日 11:31:00

#pragma warning (disable : 4786)

#include <iostream>
#include <numeric>
#include <functional>
#include <vector>
#include <iterator>
#include <string>

#if _MSC_VER > 1020 // if VC++ version is > 4.2
using namespace std; // std c++ libs implemented in std
#endif

typedef vector < float, allocator < float > > FloatArray;
typedef vector < string, allocator < string > > StringArray;
typedef ostream_iterator <float, char, char_traits <char> >
FloatOstreamIt;

void main ()
{
// a vector of floats
FloatArray rgFA;

// an ostream iterator that outputs a float to cout terminated
// by a space
FloatOstreamIt OstreamIt(cout," ");

// Initialize the array to 1,1/2,1/3,...
for (int i=0; i<10; i++) rgFA.push_back(1.0f/(i+1));

// Print the array
copy(rgFA.begin(),rgFA.end(),OstreamIt);
cout << endl;

// Sum the array
cout << "The sum of 1 + 1/2 + 1/3 + ... + 1/10 is "
<< accumulate(rgFA.begin(),rgFA.end(),0.0f)
<< endl;

// Compute the product of the array
cout << "The product of 1 * 1/2 * 1/3 * ... * 1/10 is "
<< accumulate(rgFA.begin(),rgFA.end(),1.0f,multiplies<float>())
<< endl;

// Initialize array of strings
StringArray rgs;
rgs.push_back("This ");
rgs.push_back("is ");
rgs.push_back("one ");
rgs.push_back("sentence. ");

// Concatenate the strings in the array & print the sentence
cout << "The concatenated vector of strings: "
<< accumulate(rgs.begin(),rgs.end(),string(""))
<< endl;
}



程序输出为:

1 0.5 0.333333 0.25 0.2 0.166667 0.142857 0.125 0.111111 0.1
The sum of 1 + 1/2 + 1/3 + ... + 1/10 is 2.92897
The product of 1 * 1/2 * 1/3 * ... * 1/10 is 2.75573e-007
The concatenated vector of strings: This is one sentence.

以下网址可参考:

http://topic.csdn.net/u/20080531/00/f1595d26-60e2-4aa9-9263-80d4755dd31e.html

C++ STL算法系列3---求和:accumulate

该算法在numeric头文件中定义。 假设vec是一个int型的vector对象,下面的代码: //sum the elements in vec starting the summation...
  • hyg0811
  • hyg0811
  • 2013年08月30日 15:08
  • 7370

accumulate函数用法

function template std::accumulate sum (1) template T accumulate (InputIterator fi...
  • yangcs2009
  • yangcs2009
  • 2014年09月04日 19:20
  • 6369

C++学习之标准库泛型算法_STL算法

参见http://www.cplusplus.com/reference/std/ 标准库中的算法主要在algorithm、numeric两个头文件,注意有些是只能在C++11下使用,比如all_o...
  • xhu_eternalcc
  • xhu_eternalcc
  • 2014年03月22日 21:00
  • 1967

C++ STL算法之accumulate函数

1. 介绍  用来计算特定范围内(包括连续的部分和初始值)所有元素的和,除此之外,还可以用指定的二进制操作来计算特定范围内的元素结果。其头文件在numeric中。   accumulate原函数声明...
  • Jeanphorn
  • Jeanphorn
  • 2015年04月18日 16:22
  • 8601

从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)

一、移除性算法 (remove)  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25...
  • Simba888888
  • Simba888888
  • 2013年07月26日 13:15
  • 2419

【C++ STL应用与实现】86: 如何使用std::accumulate

本文总结了STL算法中,数值类算法(numeric algorithm)里的第一个算法: std::accumulate的使用, 及注意事项...
  • elloop
  • elloop
  • 2015年12月18日 09:45
  • 9041

STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)

一、移除性算法 (remove)  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
  • haluoluo211
  • haluoluo211
  • 2015年01月10日 22:57
  • 383

C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)

一、移除性算法 (remove)  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
  • Al_xin
  • Al_xin
  • 2014年09月11日 08:56
  • 520

c++STL之accumulate

介绍  用来计算特定范围内(包括连续的部分和初始值)所有元素的和,除此之外,还可以用指定的二进制操作来计算特定范围内的元素结果。其头文件在numeric中。   accumulate原函数声明定义...
  • kaikai_sk
  • kaikai_sk
  • 2017年01月14日 20:45
  • 152

STL之accumulate

需要的头文件: numeric 源码://版本1 template _Tp accumulate(_InputIterator __first, _InputIterator __las...
  • weiwei9363
  • weiwei9363
  • 2015年09月09日 23:53
  • 442
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL中accumulate函数的使用
举报原因:
原因补充:

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