Listing 2 Counting the number of matching files


int cmp_no_case( struct dirent const *lhs
               , struct dirent const *rhs);

int main(int , char **)
{
  using unixstl::readdir_sequence;

  readdir_sequence                 files("/usr/include");
  readdir_sequence::const_iterator begin_o(files.begin());
  readdir_sequence::const_iterator end_o(files.end());

  for(; begin_o != end_o; ++begin_o) // outer loop
  {
    using namespace std;

    size_t cDups = count_if( begin_o
                           , end_o
                           , not1( bind1st( ptr_fun(cmp_no_case)
                                          , *begin_o)));

    if(cDups > 1)
    {
      printf("Duplicate: %s, %d\n",
              (*begin_o)->d_name,
              cDups);
    }
  }

  return 0;
}