На этом шаге мы рассмотрим векторы.
В 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. Результат работы приложения
На следующем шаге мы рассмотрим деки.