1

我正在尝试使用多维向量创建多维直方图,但我不知道提前的维度大小。关于如何在 C++ 中执行此操作的任何想法?

穆斯塔法

4

3 回答 3

3

编写自己的类。对于初学者,您可能需要以下内容:

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;
}
于 2013-01-31T18:34:13.503 回答
1

您可以使用std::vector,例如:

std::vector<std::vector<yourType> >

(或者如果你使用一个框架,你可以搜索它的文档以获得更好的集成数组替换;))

于 2013-01-31T17:34:27.650 回答
0
vector<vector<int>> mutli_dim_vector_name(num_rows, (vector<int>(num_cols, default_value)));

// 您可以使用此格式进一步嵌套到您想要的尺寸。

于 2018-02-10T21:04:40.837 回答