На этом шаге мы рассмотрим еще один пример преобразования относительных значений в абсолютные.
Следующий пример показывает, как при помощи алгоритмов partial_sum() и adjacent_difference() преобразовать серию относительных значений в серию абсолютных значений и наоборот:
//--------------------------------------------------------------------------- #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; } int main() { vector<int> coll; coll.push_back(17); coll.push_back(-3); coll.push_back(22); coll.push_back(13); coll.push_back(13); coll.push_back(-9); PRINT_ELEMENTS(coll,"Исходная коллекция:\n"); // Преобразование к относительным значениям adjacent_difference (coll.begin(), coll.end(), // Источник coll.begin()); // Приемник PRINT_ELEMENTS(coll,"Относительные значения:\n"); // Преобразование к абсолютным значениям partial_sum (coll.begin(), coll.end(), // Источник coll.begin()); // Приемник PRINT_ELEMENTS(coll,"Абсолютные значения:\n"); getch(); return 0; } //---------------------------------------------------------------------------
Результат выполнения программы выглядит так:
Рис.1. Результат работы приложения
Со следующего шага мы будем рассматривать специальные контейнеры.