find all template function : Function Template « Function « C++






find all template function

  
#include <vector>
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;

template <typename InputIterator, typename Predicate>
vector<InputIterator> find_all(InputIterator first, InputIterator last, Predicate pred)
{
  vector<InputIterator> res;

  while (true) {
    first = find_if(first, last, pred);
    if (first == last) {
      break;
    }
    res.push_back(first);
    ++first;
  }
  return (res);
}

int main(int argc, char** argv){

  int arr[] = {3, 4, 5, 4, 5, 6, 5, 8};
  vector<int*> all = find_all(arr, arr + 8, bind2nd(equal_to<int>(), 5)); 
  
  cout << "Found " << all.size() << " matching elements: ";
  
  for (vector<int*>::iterator it = all.begin(); it != all.end(); ++it) {
    cout << **it << " ";
  }
  return (0);
}
  
    
  








Related examples in the same category

1.A generic mode finding function.A generic mode finding function.
2.Function template: swap valuesFunction template: swap values
3.Simple template function to accept two parametersSimple template function to accept two parameters
4.template function for find a valuetemplate function for find a value
5.Creating a custom algorithm based on templateCreating a custom algorithm based on template
6.Using a Binary Function to Multiply Two Ranges
7.Making a Sequence of Random Numbers
8.write function object
9.Use a Function Object to Hold state
10.template function for bubble sort
11.template function for compacting the items
12.Template copy array function
13.function template for getting the max value
14.Overriding a template function.
15.Using Standard Parameters with Template Functions