稀疏向量(Sparse Vector)

映射向量(Mapped Vector)

定義

模板類mapped_vector<T, A> 是所有使用元素映射(element maps)的稀疏向量(sparse vectors)的基容器適配器(base container adaptor)。對於一個n-維 稀疏向量且0 <= i < n ,那麼非零元素vi 被映射到關聯容器中的連續元素(consecutive elements),例如,對於容器中的元素k = vi1k + 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;
}

定義

定義在並沒有文件vector_sparse.hpp中。

模板參數

參數 說明 缺省值
T 存儲在映射向量(mapped vector)中的對象的類型。
A 適配數組(adapted array)的類型。 [1] map_std<std::size_t, T>

模型(Model of)

向量(Vector)

類型要求(Type requirements)

沒有,除了由向量(Vector)所施加的類型要求。

公有基類(Public base classes)

vector_container<mapped_vector<T, A> >

成員

成員 說明
mapped_vector () 分配一個存儲0個元素的mapped_vector
mapped_vector (size_type size, size_type non_zeros = 0) 分配一個最多存儲size個元素的mapped_vector
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) 重新分配一個存儲最多size個元素的mapped_vector。如果被指定,那麼 mapped_vector中已經存在的元素將會被保留。
size_type size () const 返回mapped_vector的大小。
const_reference operator () (size_type i) const 返回第i-th個元素的常引用。
reference operator () (size_type i) 返回第i-th個元素的引用。
const_reference operator [] (size_type i) const 返回第i-th個元素的常引用。
reference operator [] (size_type i) 返回第i-th個元素的引用。
mapped_vector &operator = (const mapped_vector &v) 賦值運算符。
mapped_vector &assign_temporary (mapped_vector &v) 賦值給一個臨時變量。可能會改變映射向量(mapped vector) v
template<class AE>
mapped_vector &operator = (const vector_expression<AE> &ae)
擴展賦值運算符。
template<class AE>
mapped_vector &assign (const vector_expression<AE> &ae)
將一個向量表達式賦值給一個(mapped vector)。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
mapped_vector &operator += (const vector_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。將一個向量表達式加到 映射向量(mapped vector)。
template<class AE>
mapped_vector &plus_assign (const vector_expression<AE> &ae)
將一個向量表達式加到一個映射向量(mapped vector)。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
mapped_vector &operator -= (const vector_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。從映射向量(mapped vector)中減去向量表達式。
template<class AE>
mapped_vector &minus_assign (const vector_expression<AE> &ae)
從一個映射向量(mapped vector)中減去一個向量表達式。 賦值的左邊和右邊應當是相互獨立的。
template<class AT>
mapped_vector &operator *= (const AT &at)
一個運算賦值運算符(computed assignment operator)。將一個映射向量(mapped vector) 乘以一個標量。
template<class AT>
mapped_vector &operator /= (const AT &at)
一個運算賦值運算符(computed assignment operator)。將一個映射向量(mapped vector) 除以一個標量。
void swap (mapped_vector &v) 交換映射向量(mapped vectors)。
true_reference insert_element (size_type i, const_reference t) 在第i-th插入t。不允許重複元素。
void erase_element (size_type i) 刪除第i-th個元素。
void clear () 清除映射向量(mapped vector)。
const_iterator begin () const 返回一個指向mapped_vector開始處的const_iterator
const_iterator end () const 返回一個指向mapped_vector終止處的const_iterator
iterator begin () 返回一個指向mapped_vector開始處的iterator
iterator end () 返回一個指向mapped_vector終止處的citerator
const_reverse_iterator rbegin () const 返回一個指向反轉(reversed)mapped_vector開始處的const_reverse_iterator
const_reverse_iterator rend () const 返回一個指向反轉(reversed)mapped_vector終止處的const_reverse_iterator
reverse_iterator rbegin () 返回一個指向反轉(reversed)mapped_vector開始處的reverse_iterator
reverse_iterator rend () 返回一個指向反轉(reversed)mapped_vector終止處的reverse_iterator

Notes

[1] 對於適配數組(adapted array)所支持的參數是map_array<std::size_t, T>map_std<std::size_t, T>。後者等價於std::map<std::size_t, T>

Compressed Vector

說明

模板類compressed_vector<T, IB, IA, TA> 是所有的壓縮向量(compressed vectors)的基容器適配器(base container adaptor)。對於一個n-維壓縮向量且0 <= i < n ,那麼非零元素vi 被映射到索引和值容器中的連續元素(consecutive elements),例如對於容器中的元素k = vi1k + 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;
}

定義

定義在並沒有文件vector_sparse.hpp中。

模板參數

參數 說明 缺省值
T 存儲在壓縮向量(compressed vector)中的對象的類型。
IB 壓縮向量的索引基(index base)。[1] 0
IA 用於存儲索引的適配數組(adapted array)的類型。[2] unbounded_array<std::size_t>
TA 用於存儲值的適配數組(adapted array)的類型。[2] unbounded_array<T>

模型(Model of)

向量(Vector)

類型要求(Type requirements)

沒有,除了由向量(Vector)所施加的類型要求。

公有基類(Public base classes)

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

成員

成員 說明
compressed_vector () 分配一個包含0個元素的compressed_vector
compressed_vector (size_type size, size_type non_zeros) 分配一個至多包含size個元素的compressed_vector
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) 重新分配一個至多包含size個元素的compressed_vector。如果指定,那麼 compress_vector中已經存在的元素將會被保留。
size_type size () const 返回compressed_vector的大小。
const_reference operator () (size_type i) const 返回第i-th個元素的常引用。
reference operator () (size_type i) 返回第i-th個元素的引用。
const_reference operator [] (size_type i) const 返回第i-th個元素的常引用。
reference operator [] (size_type i) 返回第i-th個元素的引用。
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-th個元素。不允許有重複元素。
void erase_element (size_type i) 清除第i-th個元素。
void clear () 清空壓縮向量。
const_iterator begin () const 返回指向compressed_vector開始處的const_iterator
const_iterator end () const 返回指向compressed_vector終止處的const_iterator
iterator begin () 返回指向compressed_vector開始處的iterator
iterator end () 返回指向compressed_vector終止處的iterator
const_reverse_iterator rbegin () const 返回指向反轉的(reversed)compressed_vector開始處的const_reverse_iterator
const_reverse_iterator rend () const 返回指向反轉的(reversed)compressed_vector終止處的const_reverse_iterator
reverse_iterator rbegin () 返回指向反轉的(reversed)compressed_vector開始處的reverse_iterator
reverse_iterator rend () 返回指向反轉的(reversed)compressed_vector終止處的reverse_iterator

注意

[1] 支持索引基(index base)至少為0和1的參數。

[2] 對於適配數組(adapted array)所支持的參數是unbounded_array<> , bounded_array<>std::vector<>

Coordinate Vector

說明

模板類coordinate_vector<T, IB, IA, TA> 是壓縮向量(compressed vectors)的基容器適配器(base container adaptor)。對於一個n-維排序的( sorted) coordinate vector 且 0 <= i < n ,那麼非零元素vi 被映射到索引和值容器中的連續元素(consecutive elements)。例如,對於容器中的元素k = vi1k + 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;
}

定義

定義在並沒有文件vector_sparse.hpp中。

模板參數

參數 說明 缺省值
T 存儲在coordinate vector中的對象的類型。
IB coordinate vector的索引基(index base)。[1] 0
IA 用於存儲索引的適配數組的類型。[2] unbounded_array<std::size_t>
TA 用於存儲值的適配數組的類型。[2] unbounded_array<T>

模型(Model of)

向量(Vector)

類型要求(Type requirements)

沒有,除了由向量(Vector)所施加的類型要求。

公有基類(Public base classes)

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

成員

成員 說明
coordinate_vector () 分配一個包含0個元素的coordinate_vector
coordinate_vector (size_type size, size_type non_zeros) 分配一個最多包含size個元素的coordinate_vector
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) 重新分配一個最多包含size個元素的coordinate_vector。 如果指定,那麼coordinate_vector中已經存在的元素將會被保留。
size_type size () const 返回coordinate_vector的大小。
const_reference operator () (size_type i) const 返回第i-th個元素的常引用。
reference operator () (size_type i) 返回第i-th個元素的引用。
const_reference operator [] (size_type i) const 返回第i-th個元素的常引用。
reference operator [] (size_type i) 返回第i-th個元素的引用。
coordinate_vector &operator = (const coordinate_vector &v) 賦值運算符。
coordinate_vector &assign_temporary (coordinate_vector &v) 賦值給一個臨時變量。可能會改變coordinate vector v
template<class AE>
coordinate_vector &operator = (const vector_expression<AE> &ae)
擴展賦值運算符。
template<class AE>
coordinate_vector &assign (const vector_expression<AE> &ae)
將一個向量表達式賦給一個coordinate vector。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
coordinate_vector &operator += (const vector_expression<AE> &ae)
一個運算賦值運算符。將一個向量表達式加到一個coordinate vector。
template<class AE>
coordinate_vector &plus_assign (const vector_expression<AE> &ae)
將一個向量表達式回到coordinate vector。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
coordinate_vector &operator -= (const vector_expression<AE> &ae)
一個運算賦值運算符。從一個coordinate vector中減去一個向量表達式。
template<class AE>
coordinate_vector &minus_assign (const vector_expression<AE> &ae)
從一個coordinate vector表達式中減去一個向量表達式。賦值的左邊和右邊應當是相互獨立的。
template<class AT>
coordinate_vector &operator *= (const AT &at)
一個運算賦值運算符。將一個coordinate vector乘以一個標量。
template<class AT>
coordinate_vector &operator /= (const AT &at)
一個運算賦值運算符。將一個coordinate vector除以一個標量。
void swap (coordinate_vector &v) 交換coordinate vectors的內容。
true_reference insert_element (size_type i, const_reference t) t 插入到第 i-th 個元素。 不允許有重複元素。
void append_element (size_type i, size_type j, const_reference t) t附加到第 i-th 個元素。 重複的元素可以被附加到一個 coordinate_vector。它們由sort函數合併為一個單獨的算術和元素(arithmetically summed element)。
void erase_element (size_type i) 刪除第i-th個元素。
void clear () 清除coordinate vector。
const_iterator begin () const 返回指向coordinate_vector開始處的const_iterator
const_iterator end () const 返回指向coordinate_vector終止處的const_iterator
iterator begin () 返回指向coordinate_vector開始處的iterator
iterator end () 返回指向coordinate_vector終止處的iterator
const_reverse_iterator rbegin () const 返回指向反轉的(reversed)coordinate_vector開始處的const_reverse_iterator
const_reverse_iterator rend () const 返回指向反轉的(reversed)coordinate_vector終止處的const_reverse_iterator
reverse_iterator rbegin () 返回指向反轉的(reversed)coordinate_vector開始處的reverse_iterator
reverse_iterator rend () 返回指向反轉的(reversed)coordinate_vector終止處的reverse_iterator

注意

[1] 支持索引基(index base)至少為0和1的參數。

[2] 對於適配數組(adapted array)所支持的參數是unbounded_array<> , bounded_array<>std::vector<>


Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt ).