初始化类内向量向量的两个维度

Initializing both dimensions of a vector of vectors inside a class

本文关键字:向量 两个 初始化      更新时间:2023-10-16

我有一个类

class A
{
    private:   
        std::vector< std::vector<int> > v;
    //other statements
}
我想通过将这个向量

传递给类的构造函数来初始化这个向量的两个维度,可能使用初始化项列表。

这个问题问的是

整数向量的相同问题,这问的是向量向量的初始化,但在任何类之外。我想初始化两个维度的大小,但向量是一个类成员。

我该怎么做?

您可以将它们放在成员初始值设定项列表中


喜欢这个

class A{
public:
   A(int dim1,int dim2):v(dim1,std::vector<int>(dim2)){}
private:   
   std::vector< std::vector<int> > v;
};

或者您可以使用vector::resize

class A{
public:
   A(int dim1,int dim2){v.resize(dim1,std::vector<int>(dim2));}
private:   
   std::vector< std::vector<int> > v;
};

是否要使用现有数据进行初始化?

struct Matrix
{
    Matrix(std::initializer_list< std::initializer_list<int> > ilil)
    {
        data_.reserve(ilil.size());
        for (auto&& il : ilil)
        {
            data_.emplace_back(il);
        }
    }
    std::vector< std::vector<int> > data_;
};
void test()
{
    auto m = Matrix {
        { 1, 2, 3 },
        { 4, 5, 6 },
        { 7, 8, 9 }
    };
}