На этом шаге мы приведем небольшой пример использования деков.
Ниже приводится простой пример, демонстрирующий практическое применение деков.
//--------------------------------------------------------------------------- #include <vcl.h> #include <iostream> #include <iterator> #include <deque> #include <string> #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; } template <class T> inline void PRINT_ELEMENTS (const T& coll, const char* optcstr="") { typename T::const_iterator pos; std::cout << ToRus(optcstr); for (pos=coll.begin(); pos!=coll.end(); ++pos) { std::cout <<*pos <<' '; } std::cout << std::endl; } int main(int argc, char* argv[]) { // Создание пустого дека для хранения строк deque<string> coll; // Вставка нескольких элементов coll.assign (3, string(ToRus("строка"))); coll.push_back (ToRus("последняя строка")); coll.push_front (ToRus("первая строка")); // Вывод элементов с разделением символом новой строки cout << ToRus("Исходные строки:\n"); copy (coll.begin(), coll.end(), ostream_iterator<string>(cout," \n")); cout << endl; // Удаление первого и последнего элементов coll.pop_front(); coll.pop_back(); // Вставка "какая-то" во все элементы, кроме первого for (unsigned i=1; i<coll.size(); ++i) { coll[i] = ToRus("какая-то ") + coll[i]; } // Увеличение размера до четырех элементов coll.resize (4, ToRus("изменяющая размер строка")); // Вывод элементов с разделением символом новой строки cout << ToRus("Cтроки после изменений:\n"); copy (coll.begin(), coll.end(), ostream_iterator<string>(cout,"\n")); cout << endl; getch(); return 0; } //---------------------------------------------------------------------------
Результат выполнения программы выглядит так:
Рис.1. Результат выполнения приложения
Со следующего шага мы будем рассматривать списки.