無限的數組存儲(Unbounded Array Storage)

無限的數組(Unbounded Array)

說明

模板類unbounded_array<T, ALLOC> 使用一個分配器來實現一個無限的存儲數組(unbounded storage array)。無限數組(unbounded array)類似於std::vector ,它可以自動增長數組的長度。然而unbounded_array 的目的在於優化性能。因此unbounded_array 並沒有以使用一個類似於std::vector 的序列模型。

當改變unbounded_array 大小的時候會重新分配內存,即使新的內存需求更小一些。因此,重新改變一個unbounded_array的大小是很低效的。

例子

#include <boost/numeric/ublas/storage.hpp>

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

定義

定義在頭文件 storage.hpp 中。

模板參數

參數 說明 缺省值
T 存儲在數組中的對象的類型。
ALLOC 一個 STL 分配器(Allocator) std::allocator

模型(Model of)

存儲(Storage)

類型要求(Type requirements)

沒有,除了由存儲所施加的類型要求。

公有基類(Public base classes)

沒有。

成員

成員 定義位置 說明
value_typeContainer
pointerContainer定義為 value_type*
const_pointerContainer定義為 const value_type*
referenceContainer定義為 value_type&
const_referenceContainer定義為 const value_type&
size_typeContainer定義為 Alloc::size_type
difference_typeContainer定義為 Alloc::difference_type
iteratorContainer定義為 pointer
const_iteratorContainer定義為 const_pointer
revere_iteratorContainer定義為 std::reverse_iterator<iterator>
const_revere_iteratorContainer定義為 std::reverse_iterator<const_iterator>
allocator_type定義為 ALLOC
explicit unbounded_array (ALLOC &a = ALLOC()) Storage 使用一個指定的分配器來生成一個包含0個元素的unbounded_array
explicit unbounded_array (size_type size, ALLOC &a = ALLOC()) Storage 使用一個指定的分配器來生成一個未初始化的包含size個元素的unbounded_array。 所有的元素使用缺省構造。
unbounded_array (size_type size, const T& init, ALLOC& a = ALLOC()) Storage 使用一個指定的分配器來生成一個未初始化的包含size個元素的unbounded_array。 所有的元素使用init值構造。
unbounded_array (const unbounded_array &a) Container 拷貝構造函數。
~unbounded_array () Container 析構unbounded_array本身。
void resize (size_type n) Storage 重新分配一個包含n個元素的unbounded_array。元素沒有初始化。
void resize(size_type n, const T& t) Storage 重新分配一個包含n個元素的unbounded_array。元素是t的拷貝。
size_type size () const Container 返回unbounded_array的大小。
const_reference operator [] (size_type i) const Container 返回指向第i個元素的const引用。
reference operator [] (size_type i) Container 返回指向第i個元素的引用。
unbounded_array &operator = (const unbounded_array &a) Container 賦值運算符。
unbounded_array &assign_temporary (unbounded_array &a) 賦值給一個臨時變量。可能會改變數組 a
void swap (unbounded_array &a) Container 交換數組的內容。
const_iterator begin () const Container 返回指向unbounded_array開始處的 const_iterator
const_iterator end () const Container 返回指向unbounded_array終止處的 const_iterator
iterator begin () Container 返回指向unbounded_array開始處的 iterator
iterator end () Container 返回指向unbounded_array終止處的 iterator
const_reverse_iterator rbegin () const Reversible Container 返回指向反轉的(reversed)unbounded_array開始處的 const_reverse_iterator
const_reverse_iterator rend () const Reversible Container 返回指向反轉的(reversed)unbounded_array終止處的 const_reverse_iterator
reverse_iterator rbegin () Reversible Container 返回指向反轉的(reversed)unbounded_array開始處的 reverse_iterator
reverse_iterator rend () Reversible Container 返回指向反轉的(reversed)unbounded_array終止處的 reverse_iterator

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 ).