Последовательные контейнеры. Векторы

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

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий