Development C++ Tutorial

//Revised from
//STL Tutorial and Reference Guide C++ Programming with the Standard Template L
ibrary, 2nd Edition
//by David R. Musser (Author), Atul Saini (Author)
//# Publisher: Addison-Wesley Pub (Sd) (March 1996)
//# Language: English
//# ISBN-10: 0201633981
//# ISBN-13: 978-0201633986
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
template 
class less_with_count : public binary_function {
public:
  less_with_count() { }
  bool operator()(const T& x, const T& y) {
        ++counter;
        return x < y;
  }
  long report() const {return counter;}
  static long counter;
};
template 
long less_with_count::counter = 0;
int main() 
{
  const long N1 = 1000, N2 = 128000;
  for (long N = N1; N <= N2; N *= 2) { 
    vector vector1;
    for (int k = 0; k < N; ++k) 
      vector1.push_back(k);
      
    random_shuffle(vector1.begin(), vector1.end());
    less_with_count comp_counter;
    less_with_count::counter = 0;
    sort(vector1.begin(), vector1.end(), comp_counter);
    cout << comp_counter.report() << endl;
  }
  return 0;
}
11846
26397
56776
125715
271505
596740
1235889
2727581