#include <iostream>
using arma::Mat;
int main()
{
Mat<unsigned char> mat; // create your matrix
mat.set_size(16,16); //Set your matrix size
//Index starts from 0
for (auto i=0; i< 16; i++){
for(auto j=0; j<16; j++){
mat(i,j) //search through your elements
}
}
return 0;
}
# 1 楼答案
有一个功能强大的库armadillo。犰狳是一种高质量的线性代数库(矩阵数学),用于C++语言,旨在实现速度和易用性之间的良好平衡。p>
根矩阵类是
Mat<type>
,请参见armadillo上支持的类型Mat<unsigned char>
应消耗与布尔值矩阵相同的内存量# 2 楼答案
这个简单的答案是,没有有效的算法来扫描矩阵。通过使用更紧凑的结构,例如位字段和缓存友好的布局,可以稍微提高性能,但老实说,这并不能解决根本问题
问题来自这样一个事实:您需要查看矩阵中的每个值,以找到变化
接下来要做什么取决于错误更改的计算强度。如果这是一个低影响的变化,只是蛮力它,因为256位真的不是那么多。但是,如果一个变化触发了一个巨大的计算开销的算法,那么您需要在其周围加入一些簿记逻辑。最简单的方法是在编写更改时记录一个更改队列,然后在每次勾选时查看需要执行的操作