Шаг 21.
Библиотека STL.
Алгоритмы. Преобразование последовательности

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

    В следующей программе используется простая функция xform(), которая возводит в квадрат каждый элемент списка. Результирующая последовательность сохраняется в том же списке, который содержал исходную последовательность.

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

#include <vcl.h>
#include <iostream>
#include <list>
#include <algorithm>
#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;
}

// Функция возведения в квадрат
int xform(int i)
{
  return i * i;
}


int main(int argc, char* argv[])
{
  list<int> x1;
  int i;
  // Помещаем значение в список.
  for(i=0; i<10; i++) x1.push_back(i);
  cout << ToRus("Исходный список x1: ");
  list<int>::iterator p = x1.begin();
  while(p != x1.end() )
  {
  	cout << *p << " ";
  	p++;
  }
  cout << endl;
  // Преобразование списка x1.
  p = transform(x1.begin(), x1.end(), x1.begin(), xform);

  cout << ToRus("Преобразованный список x1: ");
  p = x1.begin();
  while(p != x1.end())
  {
  	cout << *p << " ";
  	p++;
  }

  getch();
  return 0;
}
//---------------------------------------------------------------------------
Текст этого примера можно взять здесь.

    Результаты выполнения этой программы представлены на рисунке 1.


Рис.1. Результат работы приложения

    Со следующего шага мы начнем знакомиться с классом string.




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