1. 程式人生 > >c++快速將容器的所有值相加(accumulate)

c++快速將容器的所有值相加(accumulate)

Accumulate(累積) values in range

accumulate帶有三個形參:頭兩個形參指定要累加的元素範圍,第三個形參則是累加的初值。

模板:

template <class InputIterator, class T>
   T accumulate (InputIterator first, InputIterator last, T init)
{
  while (first!=last) {
    init = init + *first;  // or: init=binary_op(init,*first) for the binary_op version
    ++first;
  }
  return init;
}

例項:
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
    vector<int> num={1,2,3,4,5,6,7,8,9,10};
    vector<string> str={"1","2","3","4","5"};
    int sum = accumulate(num.begin(),num.end(),0);
    string sum1 = accumulate(str.begin(),str.end(),string(""));
    cout <<sum<< endl;   //55
    cout <<sum1<<endl;   //12345
    return 0;
}

注意!!!,在字串相加時不能直接以空串  “”  作為初始值,這樣編譯器會識別為const char*型別,這個型別是沒有+操作的。

相關推薦

c++快速容器所有相加accumulate

Accumulate(累積) values in range accumulate帶有三個形參:頭兩個形參指定要累加的元素範圍,第三個形參則是累加的初值。 模板: template <clas

C++11的右引用——左lvalue,純右prvaluexvalue

基本概念 C++11之前只有左值和右值的概念:lvalue,rvalue。左值可以取地址,右值不能取地址。 但是C++11之後又劃分的更加詳細了,分為左值(lvalue),純右值(prvalue)還有將亡值(xvalue),關係如下: 之前是lva

C++11 右引用1

先參考上一節  C++11 左值 右值 ,本節是右值引用的基礎及判斷方法。 一 右值引用 C++11新增的右值引用概念,用&&表示。 二 引用型別 引用型別 可以引用的值類別 備註

c++ 容器填充指定長度fill_n

  #include <iostream> // cout #include <algorithm> // fill_n #include <vector> // vector using namespace std; int m

c++ 容器的拷貝移動copy_backward

  #include <iostream> // cout #include <algorithm> // copy_backward #include <vector> // vector using namespace std

c# 快速 大量資料插入資料庫

快速插入資料 主要思想是通過在客戶端把資料都快取在Table中,然後利用SqlBulkCopy一次性把Table中的資料插入到資料庫 public static void BulkToDB(DataTable dt) { SqlConnection s

c++ 反轉容器的元素順序reverse

  #include <vector> #include <iostream> #include <iterator> #include <algorithm> using namespace std; int main() { vec

C++11 右引用4std::forward

一 例子 先看一段程式碼,然後分析。 #include <iostream> void out(int& t) { cout << "out T&" << endl; } void out(int&&

C++ 引用& 和 右引用&& 1

 我們先來簡單介紹下&引用: C和C++使用&符號來只是變數的地址。C++給&符號賦予了另一個含義,將其來宣告引用。 例如,要將rodents作為rats變數的別名,可以這樣做: int rats; int & rodents = rat

C++11標準之右引用ravalue reference轉載

臨時物件的產生和拷貝所帶來的效率折損,一直是C++所為人詬病的問題。但是C++標準允許編譯器對於臨時物件的產生具有完全的自由度,從而發展出了Copy Elision、RVO(包括NRVO)等編譯器優化技術,它們可以防止某些情況下臨時物件產生和拷貝。下面簡單地介紹一下Copy Elision、RVO

c語言==字元陣列與字串,char的取範圍1

求char型別陣列的strlen長度 昨天老師給了一道題目 #include <stdio.h> #include "string.h" int main() { int i; char a[1000]; fo

c#實現大數相加字串 string AddBig(string a, string b)

<pre name="code" class="cpp">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Thr

C#】14. printOneExcel在Excel裡作圖 & 利率插計算線性

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天主要寫寫怎麼用Visual Studio在Excel裡面做圖(ch

C++各資料型別取範圍備忘--32位作業系統

各資料型別取值範圍 bool型為布林型,佔1個位元組,取值0或1。 BOOL型為int型,一般認為佔4個位元組,取值TRUE/FALSE/ERROR。 sbyte型為有符號8位整數,佔1個位元組,取值範圍在128~127之間。 bytet型為無符號16位

微信小程式支援的所有場景id表格

基礎庫 1.1.0 開始支援,低版本需做相容處理。 當前支援的場景值有: 場景值ID 說明 1001 發現欄小程式主入口,“最近使用”列表(基礎庫2.2.4版本起將包含“我的小程式”列表) 1005 頂部搜尋框的搜尋結果頁 1006

C++ 建構函式;賦函式=;解構函式

一.建構函式 類通過一個或幾個成員函式來控制其物件的初始化過程,這些函式成為建構函式。建構函式的任務是初始化類的資料成員,只要類的物件被建立,就會執行建構函式。建構函式與類同名且沒有返回值。 ①預設建構函式 預設建構函式是沒有引數的建構函式,當類沒有定義任何建構函式時,編譯

C#基礎知識-流程控制的應用

相關 ats 循環 nbsp 使用 logs 嘗試 exc 設置斷點 流程控制我們在編程中運用到的地方非常的多,在上篇中僅僅只是簡單的介紹每一種的使用,並沒有運用到實例中,很難去理解它真正的作用。下面我們將實際的運用流程控制的代碼寫一些實例相關的程序,加深對流程控制的理解,

C++__雙向循環鏈表練習

link offset const private 鏈表 cnblogs return tail str 雙向循環鏈表 link.h #ifndef LINK_H_ #define LINK_H_ #define HEADER 0 #define TAIL -1

C語言實現粒子群算法PSO

計算 default img 第一個元素 1.4 best 實驗 atl 說過 上一回說了基本粒子群算法的實現,並且給出了C語言代碼。這一篇主要講解影響粒子群算法的一個重要參數---w。我們已經說過粒子群算法的核心的兩個公式為: Vid(k+1)=w*Vid(k)+c1*r

java刪除文件夾下面的所有文件

str try 一個 ... cmd 刪除一個文件 文件夾 style exec 原文地址:http://blog.csdn.net/smach1991710/article/details/9175757 刪除一個文件夾下面的所有文件,一種調用遞歸算法,一種調用windo