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

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

    Ниже приводится простой пример, демонстрирующий практическое применение деков.

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

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

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




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