什么是快速矩阵或二维数组,用于在C++中存储邻接矩阵
What is a fast matrix or two-dimensional array to store an adjacency matrix in C++
我试图推断一个我只能模拟的过程的马尔可夫链。最终图形将包含的状态/顶点数量非常大,但我事先不知道顶点的数量。
现在我有以下内容:
- 我的模拟每个时间步长都会输出一个包含 112 位的
boost::dynamic_bitset
。 - 我使用 bitset 作为 Google 稀疏哈希中的键来映射到一个整数值,该值可用作我想要构造的邻接矩阵的索引。
现在我需要一个好的/快速矩阵或二维数组来存储整数。它应该:
- 使用我存储在 Google 稀疏哈希中的整数值作为行/列号。(例如。我想通过执行类似
matrix(3,4) = 3
的操作来访问/更改存储的整数。 - 我不知道我需要提前需要多少行或列。因此,它应该能够动态添加行和列。
- 大多数值将为 0,因此它可能应该是某些东西的稀疏实现。
- 行和列的数量将非常大,因此应该非常快。
- 简单易用。我不需要很多数学运算,它应该只是存储和访问整数的一种快速简单的方法。
我希望我把我的问题说得足够清楚。
我建议 http://www.boost.org/doc/libs/1_54_0/libs/numeric/ublas/doc/matrix_sparse.htm - 提升UBLAS稀疏矩阵。稀疏矩阵存储有几种不同的实现,因此阅读文档可以帮助您选择适合您目的的类型。(TLDR:稀疏矩阵具有快速检索或快速插入功能。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 重载==不适用于二进制树
- Insert函数不适用于2 if语句C++
- 用于矢量处理的多个线程
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 为什么模数运算符不适用于该代码
- 并行用于C++17中数组索引范围内的循环
- 将fold表达式与std::一起用于两个元组
- 在用于格式4的arm模拟器中实现功能时的一个问题