Шаг 295.
Библиотека STL. Алгоритмы STL. Алгоритмы удаления. Удаление дубликатов. Удаление дубликатов при копировании (окончание)

    На этом шаге мы приведем еще один пример использования изученных алгоритмов.

    В следующем примере сворачиваются последовательности пробелов:

//---------------------------------------------------------------------------

#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. Результат работы приложения

    Со следующего шага мы начнем рассматривать перестановочные алгоритмы.




Предыдущий шаг Содержание Следующий шаг