С++ для начинающих



         

Использование обобщенных алгоритмов - часть 8


   cout << "\n\n";

   // отсортировать элементы

   // stable_sort сохраняет относительный порядок равных элементов

   stable_sort( texts.begin(), texts.end(), LessThan() );

   for_each( texts.begin(), texts.end(), PrintElem() );

   cout << "\n\n";

   // подсчитать число строк, длина которых больше 6

   int cnt = 0;

   // устаревшая форма count - в стандарте используется другая

   count_if( texts.begin(), texts.end(), GreaterThan(), cnt );

   cout << "Number of words greater than length six are "

        << cnt << endl;

   static string rw[] = { "and", "if", "or", "but", "the" };

   vector<string,allocator> remove_words( rw, rw+5 );

   vector<string, allocator>::iterator it2 = remove_words.begin();

   for ( ; it2 != remove_words.end(); ++it2 )

   {

      int cnt = 0;

      // устаревшая форма count - в стандарте используется другая

      count( texts.begin(), texts.end(), *it2, cnt );

          

      cout << cnt    << " instances removed:  "

           << (*it2) << endl;

      texts.erase(

         remove(texts.begin(),texts.end(),*it2),

                texts.end()

      );

   }

   cout << "\n\n";

   for_each( texts.begin(), texts.end(), PrintElem() );

}

// difference_type - это тип, с помощью которого можно хранить результат

// вычитания двух итераторов одного и того же контейнера

// - в данном случае вектора строк ...

// обычно это предполагается по умолчанию

typedef vector<string,allocator>::difference_type diff_type;

// предшествующий принятию стандарта синтаксис для <fstream>

#include <fstream.h>

main()

{

     vector<textwords, allocator> sample;

     vector<string,allocator> t1, t2;

     string t1fn, t2fn;

           // запросить у пользователя имена входных файлов ...




Содержание  Назад  Вперед