|
Console Library 4.7.0
A header-only library that makes C++ simple
|
提供编译期维度固定的多维数组容器 MultiArray,支持任意维度和元素级算术/逻辑/位运算。 More...
#include <iostream>#include <array>#include <cstddef>#include <stdexcept>#include <type_traits>#include <initializer_list>#include <algorithm>#include <cstring>#include "csexc.h"#include "repr.h"Go to the source code of this file.
Classes | |
| class | console::MultiArray< T, D > |
| 一维特化。 More... | |
| class | console::MultiArray< T, First, Rest... > |
| 多维特化(维度 >= 2)。 More... | |
Namespaces | |
| namespace | console |
| 本库所有组件所在的顶层命名空间。 | |
Functions | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator+ (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素加法(数组 + 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator- (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素减法(数组 - 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator* (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素乘法(数组 * 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator/ (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素除法(数组 / 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator% (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素取模(数组 % 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator+= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素加法赋值(数组 += 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator-= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素减法赋值(数组 -= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator*= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素乘法赋值(数组 *= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator/= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素除法赋值(数组 /= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator%= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素取模赋值(数组 %= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator== (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素相等比较(数组 == 数组),返回 bool 数组。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator!= (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素不等比较(数组 != 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator< (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素小于比较(数组 < 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator> (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素大于比较(数组 > 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator<= (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素小于等于比较(数组 <= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator>= (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 元素大于等于比较(数组 >= 数组)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator+ (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 + 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator- (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 - 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator* (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 * 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator/ (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 / 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator% (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 % 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator+= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 += 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator-= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 -= 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator*= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 *= 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator/= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 /= 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator%= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 %= 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator+ (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 + 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator- (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 - 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator* (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 * 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator/ (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 / 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator% (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 % 数组。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator+ (const MultiArray< T, Dims... > &a) |
| 一元正号(数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator- (const MultiArray< T, Dims... > &a) |
| 一元负号(数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator! (const MultiArray< T, Dims... > &a) |
| 逻辑非(数组),返回 bool 数组。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator~ (const MultiArray< T, Dims... > &a) |
| 按位取反(数组)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator== (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 == 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator!= (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 != 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator< (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 < 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator> (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 > 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator<= (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 <= 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator>= (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 >= 标量。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator== (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 == 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator!= (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 != 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator< (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 < 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator> (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 > 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator<= (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 <= 数组。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator>= (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 >= 数组。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator&& (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 逻辑与(数组 && 数组),返回 bool 数组。 | |
| template<class T, size_t... Dims> | |
| MultiArray< bool, Dims... > | console::operator|| (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 逻辑或(数组 || 数组)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator&& (const MultiArray< T, Dims... > &a, const U &value) |
| 逻辑与(数组 && 标量)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator|| (const MultiArray< T, Dims... > &a, const U &value) |
| 逻辑或(数组 || 标量)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator&& (const U &value, const MultiArray< T, Dims... > &a) |
| 逻辑与(标量 && 数组)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< bool, Dims... > | console::operator|| (const U &value, const MultiArray< T, Dims... > &a) |
| 逻辑或(标量 || 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator& (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 按位与(数组 & 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator| (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 按位或(数组 | 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator^ (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 按位异或(数组 ^ 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator<< (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 左移(数组 << 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > | console::operator>> (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 右移(数组 >> 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator&= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 按位与赋值(数组 &= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator|= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 按位或赋值(数组 |= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator^= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 按位异或赋值(数组 ^= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator<<= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 左移赋值(数组 <<= 数组)。 | |
| template<class T, size_t... Dims> | |
| MultiArray< T, Dims... > & | console::operator>>= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| 右移赋值(数组 >>= 数组)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator& (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 & 标量(按位与)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator| (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 | 标量(按位或)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator^ (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 ^ 标量(按位异或)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator<< (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 << 标量(左移)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator>> (const MultiArray< T, Dims... > &a, const U &value) |
| 数组 >> 标量(右移)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator& (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 & 数组(按位与,对称调用)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator| (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 | 数组(按位或,对称调用)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator^ (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 ^ 数组(按位异或,对称调用)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator<< (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 << 数组(左移,标量左移数组每位)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > | console::operator>> (const U &value, const MultiArray< T, Dims... > &a) |
| 标量 >> 数组(右移,标量右移数组每位)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator&= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 &= 标量(按位与赋值)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator|= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 |= 标量(按位或赋值)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator^= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 ^= 标量(按位异或赋值)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator<<= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 <<= 标量(左移赋值)。 | |
| template<class T, size_t... Dims, class U> | |
| MultiArray< T, Dims... > & | console::operator>>= (MultiArray< T, Dims... > &a, const U &value) |
| 数组 >>= 标量(右移赋值)。 | |
| template<class T, size_t... Dims> | |
| T | console::sum (const MultiArray< T, Dims... > &a) |
| 求和所有元素。 | |
| template<class T, size_t... Dims> | |
| T | console::min (const MultiArray< T, Dims... > &a) |
| 求最小值。 | |
| template<class T, size_t... Dims> | |
| T | console::max (const MultiArray< T, Dims... > &a) |
| 求最大值。 | |
| template<class T, size_t... Dims> | |
| bool | console::all (const MultiArray< T, Dims... > &a) |
| 检查所有元素是否都为 true(逻辑与归约)。 | |
| template<class T, size_t... Dims> | |
| bool | console::any (const MultiArray< T, Dims... > &a) |
| 检查是否存在至少一个 true 元素(逻辑或归约)。 | |
| template<size_t... OutArrDims, class VarType, size_t... InArrDims> | |
| MultiArray< VarType, OutArrDims... > | console::multiarray_cast (const MultiArray< VarType, InArrDims... > &inputArr) |
| 改变 MultiArray 的维度形状(元素类型不变),要求总元素数相同。 | |
| template<class OutType, size_t... OutArrDims, class InType, size_t... InArrDims> | |
| MultiArray< OutType, OutArrDims... > | console::unsafe_multiarray_cast (const MultiArray< InType, InArrDims... > &inputArr) |
| 不安全地改变 MultiArray 的元素类型和维度(内存拷贝)。 | |
| template<size_t... OutArrDims, class VarType, size_t... InArrDims> | |
| MultiArray< VarType, OutArrDims... > & | console::inplace_multiarray_cast (MultiArray< VarType, InArrDims... > &inputArr) |
| 就地版本的 multiarray_cast,仅视图,不拷贝(可变版本) | |
| template<size_t... OutArrDims, class VarType, size_t... InArrDims> | |
| const MultiArray< VarType, OutArrDims... > & | console::inplace_multiarray_cast (const MultiArray< VarType, InArrDims... > &inputArr) |
| 就地版本的 multiarray_cast,仅视图,不拷贝(常量版本) | |
提供编译期维度固定的多维数组容器 MultiArray,支持任意维度和元素级算术/逻辑/位运算。
MultiArray 继承自 std::array 的递归嵌套,支持 operator() 多维下标访问、扁平化迭代器、 元素级运算(包括数组与数组、数组与标量)、统计函数(sum/min/max/all/any)等。