Armadillo C ++线性代数库:如何创建布尔值的向量

时间:2013-09-19 16:03:11

标签: vector boolean armadillo

最近我开始使用Armadillo C ++库。鉴于我的C ++编码技巧不是很好,我发现这对线性代数非常友好。我也在使用它与我的matlab一起为许多重建算法加速。

我确实需要创建一个布尔值的向量,我更喜欢使用这个库而不是。但是,我无法弄清楚如何去做。我尝试过使用uvec;但是,文档似乎表明它不能与boolean一起使用。

任何帮助都将不胜感激。

此致 Dushyant

1 个答案:

答案 0 :(得分:5)

考虑使用矩阵uchar_mat,它是Mat<unsigned char>的typdef,它应该使用与布尔值矩阵相同的内存量。

版本7.8的Armadillo documentation表示矩阵Mat<type>可以是以下类型: floatdoublestd::complex<float>std::complex<double>shortintlongunsigned版本shortintlong。但是,GitHub上的代码在文件include/armadillo_bits/typedef_mat.hpp中包含typedef Mat <unsigned char> uchar_mat;,因此您还应该能够使用uchar_mat

bool值矩阵(unsigned char类型消耗8位)相比,您不会通过创建bool值矩阵来保存任何内存。这是因为in C++ every data type must be addressable;它必须至少有1个字节长,以便可以创建指向它的指针。