创建任意大小的多维向量

时间:2013-01-31 17:30:28

标签: c++ multidimensional-array

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

的Mustafa

3 个答案:

答案 0 :(得分: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>() )
    {
    }
};

对于索引,您必须使用std::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;
}

答案 1 :(得分:1)

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

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

(或者如果您使用框架,您可以搜索它的文档以获得更好的集成阵列替换;)

答案 2 :(得分:0)

vector<vector<int>> mutli_dim_vector_name(num_rows, (vector<int>(num_cols, default_value)));

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