关闭

STL中accumulate函数的使用

2723人阅读 评论(0) 收藏 举报

#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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:208492次
    • 积分:2677
    • 等级:
    • 排名:第14432名
    • 原创:16篇
    • 转载:129篇
    • 译文:0篇
    • 评论:31条
    文章分类
    最新评论