我正在尝试使用多维向量创建多维直方图,但我不知道提前的维度大小。关于如何在 C++ 中执行此操作的任何想法?
穆斯塔法
编写自己的类。对于初学者,您可能需要以下内容:
class MultiDimVector
{
std::vector<int> myDims;
std::vector<double> myData;
public:
MultiDimVector( std::vector<int> dims )
: myDims( dims )
, myData( std::accumulate(
dims.begin(), dims.end(), 1.0, std::multiplies<int>() )
{
}
};
对于索引,您必须将 astd::vector<int>
作为索引,并自己计算。基本上是这样的:
int MultiDimVector::calculateIndex(
std::vector<int> const& indexes ) const
{
int results = 0;
assert( indexes.size() == myDims.size() );
for ( int i = 0; i != indexes.size(); ++ i ) {
assert( indexes[i] < myDims[i] );
results = myDims[i] * results + indexes[i];
}
return results;
}
vector<vector<int>> mutli_dim_vector_name(num_rows, (vector<int>(num_cols, default_value)));
// 您可以使用此格式进一步嵌套到您想要的尺寸。