|
Программирование >> Немодифицирующие последовательные алгоритмы
обзор функций-членов класса 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), как показывает следующий пример:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |