На этом шаге мы рассмотрим алгоритм преобразования последовательности.
В следующей программе используется простая функция 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.