Шаг 85.
Библиотека STL.
Последовательные контейнеры. Векторы

    На этом шаге мы рассмотрим векторы.

    В STL поддерживаются следующие разновидности последовательных контейнеров:

    Кроме того, строки и обычные массивы тоже можно рассматривать как особые разновидности последовательных контейнеров.

Векторы

    Вектор управляет элементами, хранящимися в динамическом массиве. Он обеспечивает произвольный доступ к элементам, то есть программа может напрямую обратиться к любому элементу по индексу. Операции присоединения элемента в конец массива и удаления элемента из конца массива выполняются очень быстро. В следующем примере мы определяем вектор для значений типа int, вставляем в него шесть элементов и выводим элементы вектора.

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

#include <vcl.h>
#include <iostream>
#include <vector> 
#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(int argc, char* argv[])
{
  vector<int> coll;  // Вектор с целыми элементами
  // Присоединение элементов со значениями от 1 до 6 
  for (int i=1; i<=6; ++i) { 
    coll.push_back(i);
  }
  // Вывод элементов, разделенных пробелами 
  cout << ToRus("Элементы вектора: ");
  for (int i=0; i<coll.size(); ++i) { 
    cout << coll[i] << ' ';
  }
  cout << endl;

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

    Следующая директива включает заголовочный файл для работы с векторами:

  #include <vector>

    Показанное ниже объявление создает вектор с элементами типа int:

  vector<int> coll;

    Вектор не инициализируется, поэтому конструктор по умолчанию создает пустую коллекцию.

    Функция push_back() присоединяет элемент к контейнеру:

  coll.push_back(i);

    Эта функция присутствует во всех последовательных контейнерах.

    Функция size() возвращает количество элементов в контейнере:

  for (int i=0; i<coll.size(); ++i) {
    .    .    .
  }

    Эта функция поддерживается всеми контейнерными классами. Оператор индексирования [] возвращает один элемент вектора:

  cout << coll[i] << ' ';

    В данном примере элементы записываются в стандартный выходной поток данных, поэтому результаты работы программы выглядят так:


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

    На следующем шаге мы рассмотрим деки.




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