Разреженный вектор

Отображенный (mapped) вектор

Описание

Шаблонный класс mapped_vector<T, A> является базовым контейнером-адаптером для разреженных векторов, использующих элементные отображения. Для n-размерного разреженного вектора и 0 <= i < n ненулевые элементы vi отображаются (are mapped) в последовательные элементы ассоциативного (сочетательного) контейнера, т. е. для элементов k = vi1 и k + 1 = vi2 контейнера содержатся i1 < i2.

Пример

#include <boost/numeric/ublas/vector_sparse.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    mapped_vector<double> v (3, 3);
    for (unsigned i = 0; i < v.size (); ++ i)
        v (i) = i;
    std::cout << v << std::endl;
}

Будет выведено на экран:

[3](0,1,2)

Определение

Определен в заголовочном файле vector_sparse.hpp.

Параметры шаблона

Параметр Описание Значение по-умолчанию
T Тип объектов, размещаемых в отображенном векторе.
A Тип приспособленного (adapted) массива. [1] map_std<std::size_t, T>

Является моделью

Вектор .

Type requirements

None, except for those imposed by the requirements of Vector .

Публичный базовый класс

vector_container<mapped_vector<T, A> >

Функции-члены

Функция-член Описание
mapped_vector () Создает mapped_vector, содержащий ноль элементов.
mapped_vector (size_type size, size_type non_zeros = 0) Создает mapped_vector, содержащий не больше чем size элементов.
mapped_vector (const mapped_vector &v) Конструктор копирования.
template<class AE>
mapped_vector (size_type non_zeros, const vector_expression<AE> &ae)
Расширенный конструктор копирования.
void resize (size_type size, bool preserve = true) Изменяет размер mapped_vector до размеров не больше, чем size элементов. Существующие элементы mapped_vector сохраняются.
size_type size () const Возвращает размер mapped_vector.
const_reference operator () (size_type i) const Возвращает значение i-го элемента.
reference operator () (size_type i) Возвращает ссылку на i-й элемент.
const_reference operator [] (size_type i) const Возвращает значение i-го элемента.
reference operator [] (size_type i) Возвращает ссылку на i-й элемент.
mapped_vector &operator = (const mapped_vector &v) Оператор присваивания.
mapped_vector &assign_temporary (mapped_vector &v) Устанавливает временный вектор. Может изменять отображенный вектор v.
template<class AE>
mapped_vector &operator = (const vector_expression<AE> &ae)
Расширенный оператор присваивания.
template<class AE>
mapped_vector &assign (const vector_expression<AE> &ae)
Устанавливает векторное выражение для отображенного вектора. Левая и правая части присваивания должны быть независимыми.
template<class AE>
mapped_vector &operator += (const vector_expression<AE> &ae)
Вычисленный оператор присваивания. Добавляет векторное выражение к отображенному вектору.
template<class AE>
mapped_vector &plus_assign (const vector_expression<AE> &ae)
Задает векторное выражение для отображенного вектора. Левая и правая части присваивания должны быть независимыми.
template<class AE>
mapped_vector &operator -= (const vector_expression<AE> &ae)
Вычисленный оператор присваивания. Вычитает векторное выражение из отображенного вектора.
template<class AE>
mapped_vector &minus_assign (const vector_expression<AE> &ae)
Вычитает векторное выражение из отображенного вектора. Левая и правая части присваивания должны быть независимыми.
template<class AT>
mapped_vector &operator *= (const AT &at)
Вычисленный оператор присваивания. Умножает отображенный вектор на число.
template<class AT>
mapped_vector &operator /= (const AT &at)
Вычисленный оператор присваивания. Делит отображенны вектор на число.
void swap (mapped_vector &v) Обменивает содержимое векторов.
true_reference insert_element (size_type i, const_reference t) Вставляет значение t в i-й элемент. Повторы элементов недопустимы.
void erase_element (size_type i) Удаляет значение с номером i.
void clear () Очищает отображенный вектор.
const_iterator begin () const Возвращает const_iterator, указывающий на начало mapped_vector.
const_iterator end () const Возвращает const_iterator p, указывающий на конец mapped_vector.
iterator begin () Возвращает iterator , указывающий на начало mapped_vector.
iterator end () Возвращает iterator, указывающий на конец mapped_vector.
const_reverse_iterator rbegin () const Возвращает const_reverse_iterator, указывающий на начало инвертированного (обратного) mapped_vector.
const_reverse_iterator rend () const Возвращает const_reverse_iterator, указывающий на конец инвертированного (обратного) mapped_vector.
reverse_iterator rbegin () Возвращает reverse_iterator, указывающий на начало инвертированного (обратного) mapped_vector.
reverse_iterator rend () Возвращает reverse_iterator, указывающий на конец инвертированного (обратного) mapped_vector.

Примечание

[1] Поддерживаемые параметры для приспособленного (adapted) массива: map_array<std::size_t, T> и map_std<std::size_t, T>. Последнее равнозначно std::map<std::size_t, T>.

Сжатый вектор

Описание

Шаблонный класс compressed_vector<T, IB, IA, TA> является базовым контейнером-адаптером для сжатых векторов. Для n-размерного сжатого вектора и 0 <= i < n ненулевые элементы vi отображаются (are mapped) в контейнер последовательных элементов индекса и значения, т. е. для элементов контейнера k = vi1 и k + 1 = vi2 содержатся i1 < i2.

Пример

#include <boost/numeric/ublas/vector_sparse.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    compressed_vector<double> v (3, 3);
    for (unsigned i = 0; i < v.size (); ++ i)
        v (i) = i;
    std::cout << v << std::endl;
}

Будет выведено на экран:

[3](0,1,2)

Определение

Определен в заголовочном файле vector_sparse.hpp.

Параметры шаблона

Параметр Описание Значение по-умолчанию
T Тип объектов, размещаемых в сжатом векторе.
IB Индекс начала отсчета сжатого вектора. [1] 0
IA Тип приспособленного (adapted) массива для индексов. [2] unbounded_array<std::size_t>
TA Тип приспособленного (adapted) массива для значений. [2] unbounded_array<T>

Функции-члены

Функция-член Описание
compressed_vector () Создает пустой compressed_vector.
compressed_vector (size_type size, size_type non_zeros) Создает compressed_vector, содержащий не больше size элементов.
compressed_vector (const compressed_vector &v) Конструктор копирования.
template<class AE>
compressed_vector (size_type non_zeros, const vector_expression<AE> &ae)
Расширенный конструктор копирования.
void resize (size_type size, bool preserve = true) Изменяет размер compressed_vector до размера не больше size элементов. Существующие элементы compress_vector сохраняются.
size_type size () const Возвращает размер compressed_vector.
const_reference operator () (size_type i) const Возвращает значение i-го элемента.
reference operator () (size_type i) Возвращает ссылку на i-й элемент.
const_reference operator [] (size_type i) const Возвращает значение i-го элемента.
reference operator [] (size_type i) Возвращает ссылку на i-й элемент.
compressed_vector &operator = (const compressed_vector &v) Оператор присваивания.
compressed_vector &assign_temporary (compressed_vector &v) Устанавливает временный вектор. Может изменять сжатый вектор v.
template<class AE>
compressed_vector &operator = (const vector_expression<AE> &ae)
Расширенный оператор присваивания.
template<class AE>
compressed_vector &assign (const vector_expression<AE> &ae)
Задает векторное выражение для сжатого вектора. Левая и правая части присваивания должны быть независимыми.
template<class AE>
compressed_vector &operator += (const vector_expression<AE> &ae)
Вычисленный оператор присваивания. Добавляет векторное выражение к сжатому вектору.
template<class AE>
compressed_vector &plus_assign (const vector_expression<AE> &ae)
Задает векторное выражение для сжатого вектора. Левая и правая части присваивания должны быть независимыми
template<class AE>
compressed_vector &operator -= (const vector_expression<AE> &ae)
Вычисленный оператор присваивания. Вычитает векторное выражение из сжатого вектора.
template<class AE>
compressed_vector &minus_assign (const vector_expression<AE> &ae)
Вычитает векторное выражение из сжатого вектора. Левая и правая части присваивания должны быть независимыми.
template<class AT>
compressed_vector &operator *= (const AT &at)
Вычисленный оператор присваивания. Умножает сжатый вектор на число.
template<class AT>
compressed_vector &operator /= (const AT &at)
Вычисленный оператор присваивания. Делит сжатый вектор на число.
void swap (compressed_vector &v) Обменивает содержимое сжатых векторов.
true_reference insert_element (size_type i, const_reference t) Вставляет значение t в i-й элемент. Повторы элементов недопустимы.
void erase_element (size_type i) Удаляет значение с номером i.
void clear () Очищает вектор.
const_iterator begin () const Возвращает const_iterator, указывающий на начало compressed_vector.
const_iterator end () const Возвращает const_iterator, указывающий на конец compressed_vector.
iterator begin () Возвращает iterator, указывающий на начало compressed_vector.
iterator end () Возвращает iterator, указывающий на конец compressed_vector.
const_reverse_iterator rbegin () const Возвращает const_reverse_iterator, указывающий на начало инвертированного (обратного) compressed_vector.
const_reverse_iterator rend () const Возвращает const_reverse_iterator, указывающий на начало инвертированного (обратного) compressed_vector.
reverse_iterator rbegin () Возвращает reverse_iterator, указывающий на начало инвертированного (обратного) compressed_vector.
reverse_iterator rend () Возвращает reverse_iterator, указывающий на конец инвертированного (обратного) compressed_vector.

Примечания

[1] Поддерживаемые параметры для индекса начала отсчета: 0 и по крайней мере 1.

[2] Поддерживаемые параметры для приспособленного (adapted) массива: unbounded_array<> , bounded_array<> и std::vector<> .

Координатный вектор

Описание

Шаблонный класс coordinate_vector<T, IB, IA, TA> является базовым контейнером-адаптером для сжатых векторов. Для n-размерного отсортированного координатного вектора и 0 <= i < n ненулевые элементы vi отображаются в контейнер последовательных элементов индексов и значений, т. е. для элементов k = vi1 и k + 1 = vi2 контейнера содержатся i1 < i2.

Пример

#include <boost/numeric/ublas/vector_sparse.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    coordinate_vector<double> v (3, 3);
    for (unsigned i = 0; i < v.size (); ++ i)
        v (i) = i;
    std::cout << v << std::endl;
}

Будет выведено на экран:

[3](0,1,2)

Определение

Определен в заголовочном файле vector_sparse.hpp.

Параметры шаблона

Параметр Описание Значение по-умолчанию
T Тип объектов, размещаемых в сжатом векторе.
IB Индекс начала отсчета координатного вектора. [1] 0
IA Тип приспособленного (adapted) массива для индексов. [2] unbounded_array<std::size_t>
TA Тип приспособленного (adapted) массива для значений. [2] unbounded_array<T>

Является моделью

Vector .

Требования к типам данных/h4>

Для которых базовый класс Vector .

Публичный базовый класс

vector_container<coordinate_vector<T, IB, IA, TA> >

Функции-члены

Функция-член Описание
coordinate_vector () Создает пустой coordinate_vector.
coordinate_vector (size_type size, size_type non_zeros) Создает coordinate_vector, содержащий не больше size элементов.
coordinate_vector (const coordinate_vector &v) Конструктор копирования.
template<class AE>
coordinate_vector (size_type non_zeros, const vector_expression<AE> &ae)
Расширенный конструктор копирования.
void resize (size_type size, bool preserve = true) Изменяет размер coordinate_vector до размера не больше size элементов. Существующие элементы coordinate_vector сохраняются.
size_type size () const Возвращает размер coordinate_vector.
const_reference operator () (size_type i) const Возвращает значение i-го элемента.
reference operator () (size_type i) Возвращает ссылку на i-й элемент.
const_reference operator [] (size_type i) const Возвращает значение i-го элемента.
reference operator [] (size_type i) Возвращает ссылку на i-й элемент.
coordinate_vector &operator = (const coordinate_vector &v) Оператор присваивания.
coordinate_vector &assign_temporary (coordinate_vector &v) Устанавливает временный вектор. Может изменять координатный вектор v.
template<class AE>
coordinate_vector &operator = (const vector_expression<AE> &ae)
Расширенный оператор присваивания.
template<class AE>
coordinate_vector &assign (const vector_expression<AE> &ae)
Задает векторное выражение для координатного вектора. Левая и правая части присваивания должны быть независимыми.
template<class AE>
coordinate_vector &operator += (const vector_expression<AE> &ae)
Вычисленный оператор присваивания. Добавляет векторное выражение к координатному вектору.
template<class AE>
coordinate_vector &plus_assign (const vector_expression<AE> &ae)
Задает векторное выражение для координатног вектора. Левая и правая части присваивания должны быть независимыми.
template<class AE>
coordinate_vector &operator -= (const vector_expression<AE> &ae)
Вычисленный оператор присваивания. Вычитает векторное выражение из координатного вектора.
template<class AE>
coordinate_vector &minus_assign (const vector_expression<AE> &ae)
Вычитает векторное выражение из координатного вектора. Левая и правая части присваивания должны быть независимыми
template<class AT>
coordinate_vector &operator *= (const AT &at)
Вычисленный оператор присваивания. Умножает координатный вектор на число.
template<class AT>
coordinate_vector &operator /= (const AT &at)
Вычисленный оператор присваивания. Делит координатны вектор на число.
void swap (coordinate_vector &v) Обменивает содержимое сжатых векторов.
true_reference insert_element (size_type i, const_reference t) Вставляет значение t в i-й элемент. Повторы элементов недопустимы.
void append_element (size_type i, size_type j, const_reference t) Добавляет значение t в элемент с индексом i. Повторные элементы могут быть добавлены к coordinate_vector. Они объединяются в один арифметически суммированный элемент функцией sort.
void erase_element (size_type i) Удаляет значение с номером i.
void clear () Очищает вектор.
const_iterator begin () const Возвращает const_iterator, указывающий на начало coordinate_vector.
const_iterator end () const Возвращает const_iterator, указывающий на конец coordinate_vector.
iterator begin () Возвращает iterator, указывающий на начало coordinate_vector.
iterator end () Возвращает iterator, указывающий на конец coordinate_vector.
const_reverse_iterator rbegin () const Возвращает const_reverse_iterator, указывающий на начало инвертированного (обратного) coordinate_vector.
const_reverse_iterator rend () const Возвращает const_reverse_iterator, указывающий на конец инвертированного (обратного) coordinate_vector.
reverse_iterator rbegin () Возвращает reverse_iterator, указывающий на начало инвертированного (обратного) coordinate_vector.
reverse_iterator rend () Возвращает reverse_iterator, указывающий на конец инвертированного (обратного) coordinate_vector.

Примечания

[1] Поддерживаемые параметры для индекса начала отсчета: 0 и по крайней мере 1.

[2] Поддерживаемые параметры для приспособленного (adapted) массива: unbounded_array<> , bounded_array<> и std::vector<> .


Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies. This document is provided ``as is'' without express or implied warranty, and with no claim as to its suitability for any purpose.

Перевод с оригинала: Кулиш. В. И. 2006 год.