На этом шаге мы приведем еще один пример использования изученных алгоритмов.
В следующем примере сворачиваются последовательности пробелов:
//--------------------------------------------------------------------------- #include <vcl.h> #include <iterator> #include "algostuff.hpp" #include <conio.h> //необходимо для getch() #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused using namespace std; std::string ToRus(const std::string &in) { char *buff = new char [in.length()+1]; CharToOem(in.c_str(),buff); std::string out(buff); delete [] buff; return out; } bool bothSpaces (char elem1, char elem2) { return elem1 == ' ' && elem2 == ' '; } int main() { // По умолчанию начальные пробелы не пропускаются cin.unsetf(ios::skipws); cout << ToRus("Копирование стандартного ввода в стандартный вывод:\n"); // Копирование стандартного ввода в стандартный вывод // - со сверткой пробелов unique_copy(istream_iterator<char>(cin), // Начало источника: cin istream_iterator<char>(), // Конец источника: eof ostream_iterator<char>(cout), // Приемник: cout bothSpaces); // Критерий удаления getch(); return 0; } //---------------------------------------------------------------------------
Входные и выходные данные:
Рис.1. Результат работы приложения
Со следующего шага мы начнем рассматривать перестановочные алгоритмы.