...one of the most highly regarded and expertly designed C++ library projects in the world.
— Herb Sutter 和 Andrei Alexandrescu, C++ Coding Standards
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) |
构造一个从 start 到 stop (不包含) 的索引范围。 |
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 。 |
start () <= stop ()
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 复制)。