![]() |
|
Программирование >> Расширенная версия языка c++
ся. Хотя это наиболее эффективный способ реализации массивов, одновременно он и самый ограниченный, поскольку не позволяет адаптировать размер массива к изменяющимся в процессе выполнения программы условиям. Решает проблему вектор, который выделяет память для массива по мере возникновения потребности в этой памяти. Несмотря на то, что вектор является, по сути, динамическим массивом, для доступа к его элементам подходит обычная индексная нотация, которая используется для доступа к элементам стандартного массива. Ниже представлена спецификация шаблона для класса vector: templateKclass Т, class allocator r<T Glass vector Здесь Т - это тип предназначенных для хранения в контейнере данных, а ключевое слово Allocator задает распределитель памяти, который по умолчанию является стандартным распределителем памяти. В классе vector определены следующие конструкторы: explici (const Allocator £a = Allocator()) ; j explicit (3ize tYPe число, const T ачвяяе = Т() , - . const Allocator &а = Allocator()) ; vectortconst vEctor<T, Allocator>&o6ie]rT); ten5Jlate<cla3s lnIter>veotor (Inltar начало, Inlter конец, j , , . const Allocator &a = Allocator ()) ; ; Первая форма представляет собой конструктор пустого вектора. Во второй форме конструктора вектора число элементов - это число, а каждый элемент равен значению значение. Параметр значение может быть значением по умолчанию. В третьей форме конструктора вектор предназначен для одинаковых элементов, каждый из которых - это объект. Четвертая форма - это конструктор вектора, содержащего диапазон элементов, заданный итераторами начало и конец. Для любого объекта, который будет храниться в векторе, должен быть определен конструктор по умолчанию. Кроме этого, для объекта должны быть определены операторы < и ==. Для некоторых компижторов может потребоваться определить и другие операторы сравнения. (Для получения более точной информации обратитесь к документации на ваш компилятор.) Для встроенных типов данных все указанные требования выполняются автоматически. Хотя синтаксис шаблона выглядит довольно сложно, в объявлении вектора ничего сложного нет. Ниже представлено несколько примеров такого объявления: vector<int> iv; создание тора нулевой длины для целых vector<ch3r> cv(5); создание пятиэлементного вектора для символов Для класса vector определяются следующие операторы сравнения: Кроме этого для класса vector определяется оператор индекса [], что обеспечивает доступ к элементам вектора посредством обычной индексной нотации, которая используется для доступа к элементам стандартного массива. В табл. 14.2 представлены функции - члены класса vector. (Повторяем, не нужно пугаться необычного синтаксиса.) Наиболее важными функциями-членами являются функции sizeO, begin(), end(), push back(), inscrt() и erase(). Функция sizeQ возвращает текущий размер вектора. Эта функция особенно полезна, поскольку позволяет узнать размер вектора во время выполнения программы. Помните, вектор может расти по мере необходимости, поэтому размер вектора необходимо определять не в процессе компиляции, а в процессе выполнения программы. Функции О возвращает итератор начала вектора. Функция end() возвращает итератор конца вектора. Как уже говорилось, итераторы очень похожи на указатели и с помощью функций begiii() и end() можно получить итераторы (читай: указатели) начала и конца вектора. Функция pushJbackQ помещает значение в конец вектора. Если это необходимо для размещения нового вектор удлиняется. В середину вектора элемент можно добавить с помощью функции Вектор можно инициализировать. В любом случае, если в векторе хранятся элементы, то с помощью оператора индекса массива к этим элементам можно получить доступ и их изменить. Удалить элементы из вектора можно с помощью функции erase(). Таблица 14.2. Функции - члены класса vector Функция-член Описание template<class lnlter> Присваивает вектору последовательность, void assignllnlter начало, определенную итераторами начало и конец inlter конец); template<class Size, class Т> Присваивает вектору число элементов, при-vold assign(Size число, чем значение каждого элемента равно пара- const Т Азиачение - ТО); метру значение reference at(slze type / ); Возвращает ссылку на элемент, заданный const reference параметром I at(size type i) const; vector<char> cv(5, ); создание и инициализация / ементного вектора для стволов vector<int (iv) ; создание вектора для цел1х из вектора для целых Таблица 14.2 (продолжение) Функция-член Описание reference Ьаск(); const reference back() const; iterator beginO; const iterator begin() const; size typ cltyO const; void clearO; i.; , . const; iterator end(); const iterator end() const; iterator erase(lterator i); iterator Iterator начало, iterator конец); reference front(); const reference front() const; allocator type get allocator() const; iterator in9ert(lterator f, const T &значение = T{)); void srze typG число, const T &эначение]; template<class lnlter> void insert(iterator /, Inlter начало, Inlter конец); slze typ slzeO const; reference operator[] (sizetype i) const; const reference aperator[] {5)ze type () const; void pop back(); void push back(const T &значение); Возвращает ссылку вектора на последний элемент Возвращает итератор первого элемента вектора Возвращает текущую емкость вектора, т. е. то число элементов, которое можно разместить в векторе без необходимости выделения дополнительной области памяти Удаляет все элементы вектора Возвращает истину, если вызывающий вектор пуст, в противном случае возвращает ложь Возвращает итератор конца вектора Удаляет элемент, на который указывает итератор ;. Возвращает итератор элемента, который расположен следующим за удаленным Удаляет элементы, заданные между итераторами начало и конец. Возвращает итератор элемента, который расположен следующим за последним удаленным ссылку на первый элемент вектора Возвращает распределитель памяти вектора Вставляет параметр значение перед элементом, заданным итератором i. Возвращает итератор элемента Вставляет число копий параметра значение перед элементом, заданным итератором / Вставляет последовательность, определенную между итераторами начало и конец, перед элементом, заданным итератором i Возвращает число которое может храниться в векторе Возвращает ссылку на элемент, заданный параметром / Удаляет последний элемент вектора Добавляет в конец вектора элемент, значение которого равно параметру значение
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |