c++的类似对称数组的数据结构

Symmetric array-like data structure for c++

本文关键字:数组 数据结构 对称 c++      更新时间:2023-10-16

我正在做一个模拟,必须计算许多平均值,我认为使用boost::累加器是个好主意。问题是,我想要求平均值的量之一是对称矩阵,它的对角线事先是已知的。所以我只需要计算Q[I][j]的平均值,如果I<j.

一开始我觉得我可以使用

using namespace boost::accumulators;
using namespace boost::numeric::ublas;
typedef accumulator_set<double, stats<tag::mean> > accumulator;
symmetric_matrix<accumulator, lower> foo;  // a symmetric matrix of accumulators

拿着我的蓄能器。但后来我突然想到,这种对称矩阵结构可能只适合保存数值(它们定义了算术运算),或者以某种方式针对这类数据进行了优化。这是对的吗?

如果boost中的symmetric_matrix不够,我需要一个数据结构,它可以容纳没有对角线的对称矩阵的下三角,并且它必须适合容纳累加器,并且具有良好的类似矩阵的语法。这在某个图书馆能买到吗?如果没有,这种结构是否有一个简单的实现方法?

尝试Boost uBLAS三角矩阵。下面是一个例子。