Программирование >>  Немодифицирующие последовательные алгоритмы 

1 ... 25 26 27 [ 28 ] 29 30 31 ... 78


обзор функций-членов класса vector 89

в заголовке vector, хотя многие функции-члены полностью определены, а не только объявлены в этом заголовке.

iterator begin(); iterator end(); void push back(const T& x) ; reverse iterator rbeginO; reverse iterator rendO;

Рассмотрены в разделе 1.2.

const iterator begin{) const; const iterator end() const;

Рассмотрены в разделе 1.3 на примере списков.

const reverse iterator rbeginO const; const reverse iterator rend О const;

Для прохождения в обратном порядке в режиме только для чтения .

size type size О const; size type capacity() const; void reserve(size type n);

Рассмотрены в разделе 3.2.

size type max size() const;

Очень большое целое число (порядка 1 073 741 823), показывающее, до каких размеров может вырасти вектор.

bool empty О const;

Позволяет определить, пуст ли вектор.

vectorO; (1)

vector(size type n, const T& value = TO); (2)

vector(const vector<T>& x); (3)

vector(const iterator first, const iterator last); (4) -vector();

Четыре конструктора и деструктор. Эти конструкторы используются в следующих примерах:

vector<int> v; (1) Конструктор по умолчанию

vector<int> w(5, -3); (2) Создает 5 элементов,

все они равны -3

vector<int> w(5);

vector<int> wl(w); (2) Создает 5 элементов



vector<int> w2(w.begin()+1, w.beginO + 5);

(4) Копирует четыре элемента из w в w2

reference operator[](size type n); const reference operator[](size type n) const;

Операторы доступа по индексу используются в

w[3] = 3 * w[2] + 1;

vector<T>& operator=(const vector<T>& x);

Оператор присваивания используется в

vector<int> w(5, -3), v; V = w;

reference front(); reference back(); const reference front() const; const reference back() const;

Эти функции обеспечивают доступ к первому и последнему элементам вектора. Например, можно написать:

vector<int> v;

for (int i=10; i<15; i++) v.push back(i); V.front 0 = 1000;

cout V.front() << v.back() << ; cout Size = << V.sizeO endl; Вывод: 1000 14 Size = 5

void swap(vector<T>& x);

Мы можем написать либо

V.swap(w); или

w.swap(v);

чтобы поменять местами векторы vnw одного типа (но необязательно одного размера).

iterator insert(iterator position, const T& x);

Служит для вставки элемента в заданной позиции. Эта и следующие функции insert занимают время 0(п), где п - количество элементов, находящихся после вставляемого элемента; напомним, что эти элементы должны быть передвинуты, чтобы освободить место для вставляемых.



Функция возвращает итератор, который ссылается на вставленный элемент. Например, фрагмент кода

vector<int> v;

for (int k=10; к<15; k++) v.push back(к) , vector<int>: : iterator i = V.beginO + 1, j ; j = V.insert(i, 123) ;

copy (v.beginO , v.endO, См. раздел 1.9.

ostream iterator<int>(cout, )); cout endl; cout j refers to *j endl;

дает следующий вывод:

10 123 11 12 13 14 j refers to 123

void insert(iterator position, const iterator first, const iterator last);

позволяет нам вставить более одного элемента за раз. Вставляемые элементы могут быть заданы любым действительным диапазоном [first, last) элементов требуемого типа. Вот пример:

vector<int> v;

for (int k=0; k<5; k++) v.push back(k);

int a[3] = {100, 200, 300};

V.insert (v.beginO + 1, a, a+3);

Содержимое v: 0 100 200 300 1 2 3 4

void insert (iterator position, size type n, const T& x);

Эта функция служит для вставки нескольких одинаковых элементов, равных третьему аргументу, х. Например:

vector<int> v;

for (int k=0; k<5; k++) v.push back(k); int initvalue = -1;

V.insert(v.begin() +1, 4, initvalue); Содержимое v: 0-1-1-1-11234

void pop back();

void erase(iterator position);

Cm. раздел 1.3.

void erase(iterator first, iterator last);

Удаляются элементы диапазона [first, last), как показывает следующий пример:



1 ... 25 26 27 [ 28 ] 29 30 31 ... 78

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика