稀疏存儲(Sparse Storage)

缺省為標準映射(Default Standard Map)

說明

模板類map_std<I, T, ALLOC> 提供對標準庫中的關聯容器std::map的一個包裝(wrapper)。這個包含(wrapper)有一個簡單的目的。當聲明稀疏容器類型的時候,它允許定義一個缺省的模板參數。

例子

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

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

定義

定義在頭文件 storage_sparse.hpp 中。

模板參數

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

模型(Model of)

可反轉的容器(Reversible Container)。

類型要求(Type requirements)

沒有,除了由可反轉的容器(Reversible Container)所施加的類型要求。

公有基類(Public base classes)

std::map

映射數組(Map Array)

說明

模板類map_array<I, T, ALLOC> 實現一個類似於關聯容器std::map 的排序數組。因此,一些關聯容器接口不具有與std::map相同的語義。

在任何時候map_array都有一個新的元素可以插入的容量(capacity)。如果函數insert 將會導致map_array 的大小超出它的容量( capactity ),那麼它將會被重新分配(reallocated)。迭代器和引用都將是無效的(invalidated)。可以使用成員函數reserve 來直接控制容器的容量(capacite)。

例子

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

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

定義

定義在頭文件 storage_sparse.hpp 中。

模板參數

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

模型(Model of)

可反轉的容器(Reversible Container)。

類型要求(Type requirements)

沒有,除了由可反轉的容器(Reversible Container)所施加的類型要求。

公有基類(Public base classes)

None.

成員

成員 說明
map_array (ALLOC &a = ALLOC()) 分配一個包含0個元素的 map_array
map_array (const map_array &c) 拷貝構造函數。
~map_array () 析構map_array本身。
void reserve (size_type capacity) 改變map_array的容量(capacity)。它可以包含最多capacity個元素而不需要重新分配內存空間。 可以減小容量(capacity)使得 capacity >= size()map_array中的元素將會被保留。
size_type size () const 返回 map_array 的大小。
size_type size () const 返回 map_array 的容量。
data_reference operator [] (index_type i) 返回與一個特定的索引下關聯的元素的引用。 如果 map_array 沒有包含這樣一個元素。operator[] 插入缺省的元素T ()
map_array &operator = (const map_array &a) 賦值運算符。
map_array &assign_temporary (map_array &a) 賦值給一個臨時變量。可能會改變數組 a
void swap (map_array &a) 交換數組的內容。
std::pair<iterator, bool> insert (const value_type &p) p 插入到數組中。如果p被插入到數組中,那麼返回值的第二部分為 true。 如果p已經在數組中而沒有被插入到數組中,那麼返回值的第二部分為 false
iterator insert (iterator it, const value_type &p) p 插入到數組中,使用 it p所 插入的位置的提示(hint)。
void erase (iterator it) 刪除在 it 處的元素。
void clear () 清除數組。
const_iterator find (index_type i) const 查找索引為 i 的元素。
iterator find (index_type i) 查找索引為 i 的元素。
const_iterator lower_bound (index_type i) const 查找索引不小於 i 的第一個元素。
iterator lower_bound (index_type i) 查找索引不小於 i 的第一個元素。
const_iterator upper_bound (index_type i) const 查找索引大於 i 的第一個元素。
iterator upper_bound (index_type i) 查找索引大於 i 的第一個元素。
const_iterator begin () const 返回指向map_array開始處的const_iterator
const_iterator end () const 返回指向map_array終止處的const_iterator
iterator begin () 返回指向map_array開始處的iterator
iterator end () 返回指向map_array終止處的iterator
const_reverse_iterator rbegin () const 返回指向反轉的(reversed)map_array開始處的 const_reverse_iterator
const_reverse_iterator rend () const 返回指向反轉的(reversed)map_array終止處的const_reverse_iterator
reverse_iterator rbegin () 返回指向反轉的(reversed)map_array開始處的 reverse_iterator
reverse_iterator rend () 返回指向反轉的(reversed)map_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 ).