Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb SutterAndrei Alexandrescu, C++ Coding Standards

Range 和 Slice 存储

Range<SizeType,DistanceType>

描述

range 类指定了一个索引范围。该范围是从起始值到停止值的索引序列。索引递增 1,并且排除停止值。因此,range 可以用于指定向量和矩阵中元素的范围。

示例

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

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

定义

定义于头文件 storage.hpp 中。

模型

可逆容器 (Reversible Container)。

类型要求

无,除了可逆容器 (Reversible Container) 的要求所施加的那些。

公共基类

无。

成员

成员 描述
range (size_type start, size_type stop) 构造一个从 startstop (不包含) 的索引范围。
size_type start () const 返回 range 的起始位置。
size_type size () const 返回 range 的大小。
const_reference operator [] (size_type i) const 返回 i-th 元素的 start + i 值。
range compose (const range &r) const 返回从 start + r.start ()start + r.start () + r.size () 的复合范围。
bool operator == (const range &r) const 测试两个 range 是否相等。
bool operator != (const range &r) const 测试两个 range 是否不等。
const_iterator begin () const 返回指向 range 开头的 const_iterator
const_iterator end () const 返回指向 range 结尾的 const_iterator
const_reverse_iterator rbegin () const 返回指向反向 range 开头的 const_reverse_iterator
const_reverse_iterator rend () const 返回指向反向 range 结尾的 const_reverse_iterator

先决条件

Slice<SizeType,DistanceType>

描述

slice 类指定了一个索引“切片”。切片比 range 更通用,步长允许索引序列在元素之间按指定量增加和减少。因此,slice 可以用于指定向量和矩阵中元素的切片。

示例

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

int main () {
    using namespace boost::numeric::ublas;
    slice s (0, 1, 3);
    for (unsigned i = 0; i < s.size (); ++ i) {
        std::cout << s (i) << std::endl;
    }
}

定义

定义于头文件 storage.hpp 中。

模型

可逆容器 (Reversible Container)。

类型要求

无,除了可逆容器 (Reversible Container) 的要求所施加的那些。

公共基类

无。

成员

成员 描述
slice (size_type start, size_type stride, size_type size) 构造一个具有 size 个元素的切片 start,start+stride,start+2*stride...
size_type start () const 返回 slice 的起始位置。
size_type stride () const 返回 slice 的步长。
size_type size () const 返回 slice 的大小。
const_reference operator [] (size_type i) const 返回 i-th 元素的 start + i * stride 值。
slice compose (const range &r) const 返回从 start + stride * r.start ()start + stride * (r.start () + r.size ()),步长为 stride 的复合切片。
slice compose (const slice &s) const 返回从 start + stride * s.start ()start + stride * s.stride () * (s.start () + s.size ()),步长为 stride * s.stride () 的复合切片。
bool operator == (const slice &s) const 测试两个 slice 是否相等。
bool operator != (const slice &s) const 测试两个 slice 是否不等。
const_iterator begin () const 返回指向 slice 开头的 const_iterator
const_iterator end () const 返回指向 slice 结尾的 const_iterator
const_reverse_iterator rbegin () const 返回指向反向 slice 开头的 const_reverse_iterator
const_reverse_iterator rend () const 返回指向反向 slice 结尾的 const_reverse_iterator

先决条件


版权 (©) 2000-2004 Michael Stevens, Mathias Koch, Joerg Walter, Gunter Winkler
使用、修改和分发受 Boost 软件许可协议 1.0 版的约束。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)。