Aracılığıyla paylaş


accumulate

Art arda gelen kısmi toplamlar hesaplayarak bazı başlangıç değeri de dahil olmak üzere belirtilen aralıktaki tüm öğeler toplamı hesaplar veya art arda kısmi sonuçlar benzer şekilde belirtilen bir ikili işlem toplamı dışında kullanılarak elde edilen sonucu hesaplar.

template<class InputIterator, class Type>
   Type accumulate(
      InputIterator _First, 
      InputIterator _Last, 
      Type _Val
   );
template<class InputIterator, class Type, class BinaryOperation>
   Type accumulate(
      InputIterator _First, 
      InputIterator _Last, 
      Type _Val, 
      BinaryOperation _Binary_op
   );

Parametreler

  • _First
    Toplamının veya belirtilen bir ikili işlem göre birleştirilmiş aralığın ilk öğe adresleme giriş Yineleyici.

  • _Last
    Toplamının ya da gerçekten iterated saklanması dahil son öğe ötesinde bir pozisyon belirtilen bir ikili işlem göre birleştirilmiş son öğenin aralıktaki adres giriş Yineleyici.

  • _Val
    İlk değer, her öğe sırayla eklendiğinde veya belirtilen bir ikili işlem göre birlikte.

  • _Binary_op
    Her öğesinde belirtilen aralık ve önceki uygulamaları sonucu uygulanacak olan ikili işlem.

Dönüş Değeri

Toplamı _Val ilk şablon işlevi veya için ikinci şablon işlevi, ikili, toplama işlemi yerine çok belirtilen işlemi uygulanması sonucu Belirtilen aralıktaki tüm öğeleri (PartialResult, * Iter), nerede PartialResult operasyonun önceki uygulamaların sonucudur ve Iter ise aralık içindeki bir öğeyi gösteren bir yineleyici.

Notlar

Başlangıç değeri olacağını iyi tanımlanmış bir sonuç aralığı durumda boş kaldığında insures _Val döndürülür.İkili işlem ilişkilendirilebilir ya da yer değiştirebilme olması gerekmez.Başlangıç değeri sonucu başlatılan _Val ve sonra sonucu = _Binary_op (sonucu, *****Iter) oluşturmayı aralığı hesaplanan nerede Iter olduğundan aralıktaki art arda öğesine işaret eden bir yineleyici.Aralığın boyutunu doğrusal karmaşıklık ve aralığı geçerli olması gerekir.İkili işlecinin dönüş türü için dönüştürülebilir türü kapanışı yinelemede emin olmak için.

Örnek

// numeric_accum.cpp
// compile with: /EHsc
#include <vector>
#include <numeric>
#include <functional>
#include <iostream>

int main( )
{
   using namespace std;

   vector <int> v1, v2(20);
   vector <int>::iterator iter1, iter2;

   int i;
   for (i = 1; i < 21; i++)
   {
      v1.push_back(i);
   }

   cout << "The original vector v1 is:\n ( " ;
   for (iter1 = v1.begin(); iter1 != v1.end(); iter1++)
      cout << *iter1 << " ";
   cout << ")." << endl;

   // The first member function for the accumulated sum
   int total;
   total = accumulate(v1.begin(), v1.end(), 0);

   cout << "The sum of the integers from 1 to 20 is: "
        << total << "." << endl;

   // Constructing a vector of partial sums
   int j = 0, partotal;
   for (iter1 = v1.begin(); iter1 != v1.end(); iter1++)
   {
      partotal = accumulate(v1.begin(), iter1 + 1, 0);
      v2[j] = partotal;
      j++;
   }

   cout << "The vector of partial sums is:\n ( " ;
   for (iter2 = v2.begin(); iter2 != v2.end(); iter2++)
      cout << *iter2 << " ";
   cout << ")." << endl << endl;

   // The second member function for the accumulated product
   vector <int> v3, v4(10);
   vector <int>::iterator iter3, iter4;

   int s;
   for (s = 1; s < 11; s++)
   {
      v3.push_back(s);
   }

   cout << "The original vector v3 is:\n ( " ;
   for (iter3 = v3.begin(); iter3 != v3.end(); iter3++)
      cout << *iter3 << " ";
   cout << ")." << endl;

   int ptotal;
   ptotal = accumulate(v3.begin(), v3.end(), 1, multiplies<int>());

   cout << "The product of the integers from 1 to 10 is: "
        << ptotal << "." << endl;

   // Constructing a vector of partial products
   int k = 0, ppartotal;
   for (iter3 = v3.begin(); iter3 != v3.end(); iter3++) {
      ppartotal = accumulate(v3.begin(), iter3 + 1, 1, multiplies<int>());
      v4[k] = ppartotal;
      k++;
   }

   cout << "The vector of partial products is:\n ( " ;
   for (iter4 = v4.begin(); iter4 != v4.end(); iter4++)
      cout << *iter4 << " ";
   cout << ")." << endl;
}
  
  
  
  
  
  

Gereksinimler

Başlık: <numeric>

Namespace: std

Ayrıca bkz.

Başvuru

accumulate, copy, ve vector::push_back

Standart Şablon Kütüphanesi