C++ Tutorial/STL Algorithms Iterator/template iterators

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Computing the sum with template iterators

#include <iostream>
#include <vector> 
using std::cout;
using std::endl;
using std::vector;
template <typename Iter> 
double vectorSum(Iter begin, Iter end) {
  double sum = 0.0;
  while( begin != end )
    sum += *begin++;
  return sum;        
} 
int main() {
  vector<int> sunny;
  sunny.push_back(7);  
  sunny.push_back(12);  
  sunny.push_back(15);
  cout << sunny.size() << " months on record" << endl; 
  cout << "vectorSum number of sunny days: "; 
  cout << vectorSum(sunny.begin(), sunny.end()) << endl; 
  return 0;
}
3 months on record
vectorSum number of sunny days: 34

Use Iter with array

#include <iostream>
#include <vector> 
using std::cout;
using std::endl;
using std::vector;
template <typename Iter> 
double vectorSum(Iter begin, Iter end) {
  double sum = 0.0;
  
  while( begin != end )
    sum += *begin++;
  return sum;        
} 
int main() {
  double temperature[] = { 10.5, 20.0, 8.5 }; 
  cout << "array vectorSum = " 
       << vectorSum(temperature,temperature+sizeof temperature/sizeof temperature[0]) 
       << endl;
  return 0;
}
array vectorSum = 39