zoukankan      html  css  js  c++  java
  • C++ STD accumulate函数

    1. 介绍

      用来计算特定范围内(包括连续的部分和初始值)所有元素的和,除此之外,还可以用指定的二进制操作来计算特定范围内的元素结果。其头文件在numeric中。

      用次函数可以求和,构造前n项和的向量,乘积,构造前n项乘积的向量

    2. 应用举例

    #include <vector>
    #include <numeric>
    #include <functional>
    #include <iostream>
    
    using namespace std;
    
    int main( ) 
    {
    
       vector <int> v1, v2( 20 );
       vector <int>::iterator Iter1, Iter2;
    
       int i;
       for ( i = 1 ; i < 21 ; i++ )
       {
          v1.push_back( i );
       }
    
       cout << "最初向量v1中个元素的值为:
     ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    
       // accumulate函数的第一个功能,求和
       int total;
       total = accumulate ( v1.begin ( ) , v1.end ( ) , 0 );
    
       cout << "整数从1到20的和为: " 
            << total << "." << endl;
    
       // 构造一个前n项和的向量
       int j = 0, partotal;
       for ( Iter1 = v1.begin( ) + 1; Iter1 != v1.end( ) + 1 ; Iter1++ )
       {
          partotal = accumulate ( v1.begin ( ) , Iter1 , 0 );
          v2 [ j ] = partotal;
          j++;
       }
    
       cout << "前n项和分别为:
     ( " ;
       for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
          cout << *Iter2 << " ";
       cout << ")." << endl << endl;
    
       // accumulate函数的第二个功能,计算连乘积
       vector <int> v3, v4( 10 );
       vector <int>::iterator Iter3, Iter4;
    
       int s;
       for ( s = 1 ; s < 11 ; s++ )
       {
          v3.push_back( s );
       }
    
       cout << "向量v3的初始值分别为:
     ( " ;
       for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
          cout << *Iter3 << " ";
       cout << ")." << endl;
    
       int ptotal;
       ptotal = accumulate ( v3.begin ( ) , v3.end ( ) , 1 , multiplies<int>( ) );
    
       cout << "整数1到10的连乘积为: " 
            << ptotal << "." << endl;
    
       // 构造一个前n项积的向量
       int k = 0, ppartotal;
       for ( Iter3 = v3.begin( ) + 1; Iter3 != v3.end( ) + 1 ; Iter3++ ) {
          ppartotal = accumulate ( v3.begin ( ) , Iter3 , 1 , multiplies<int>( ) );
          v4 [ k ] = ppartotal;
          k++;
       }
    
       cout << "前n项积分别为:
     ( " ;
       for ( Iter4 = v4.begin( ) ; Iter4 != v4.end( ) ; Iter4++ )
          cout << *Iter4 << " ";
       cout << ")." << endl;
    }

    编译运行,看一下输出结果: 
    re

     
     
  • 相关阅读:
    【GitHub】上传代码通用操作等(附下载单个文件夹或文件)
    【Git】之分支合并命令
    【FFmpeg】之Mac系统爬取所有M3U8视频下载方法
    i2c超时
    linux下串口调试
    cgminer分析
    i2c驱动理解
    STM32(三十七)SPI读取W25Q128flash的厂商ID、设备ID以及读写数据(硬件SPI)
    驱动静态和动态加载
    I2C基本原理及对I2C Adapter的理解
  • 原文地址:https://www.cnblogs.com/FuLiuWei/p/fuliuweistdaccumulate.html
Copyright © 2011-2022 走看看