繁体   English   中英

初始化struct向量的向量的好方法(每个向量都有一个初始值)?

[英]Good way to initialise a vector of vectors of struct (each with an initial value)?

我指的是我之前问的一个问题,我在哪里询问用空值初始化struct Vanish向量的最佳方法:

使用assign()是初始化我的C ++结构向量的好方法吗?

我接受了答案:

BigClass::BigClass()
: tovanish(MAX_VANISH)
{

}

现在,我的问题是,如果要初始化struct Vanish的向量的向量作为我的类( BigClass )的成员,但是这次用值{3,3}初始化每个Vanish 我有:

std::vector<std::vector<Vanish>> vanish_vectors;

在我的构造函数中,我尝试过:

BigClass::BigClass():
    vanish_vectors(NUM_COLUMNS, (NUM_ROWS, (3,3)))
  {

  }

旨在创建NUM_COLUMNS个向量,并且在每个向量中将有NUM_ROWS个结构Vanish初始化为值{3,3}。

使用调试器,我发现它确实创建了NUM_COLUMNS个向量。 但是,每个向量都包含3个Vanish结构,全为零。

用值初始化那些Vanish结构的最佳方法是什么?

除非这是我不熟悉的语法,否则您实际上尝试使用的是逗号运算符 ,因此(NUM_COLUMNS, (NUM_ROWS, (3,3)))变成(NUM_COLUMNS,3) ,将3作为传递值构造来自的向量(它将依次使用int调用向量的构造函数,为您提供3个默认初始化元素的向量)

我认为您需要做的是:

// C++11
vanish_vectors(NUM_COLUMNS, std::vector<Vanish>(NUM_ROWS, {3,3}))

// or for older C++ (you will also need to give Vanish a constructor)
vanish_vectors(NUM_COLUMNS, std::vector<Vanish>(NUM_ROWS, Vanish(3, 3)))

// or (as noted in the comments) to keep Vanish as POD in pre-C++11:
vanish_vectors(NUM_COLUMNS, std::vector<Vanish>(NUM_ROWS, makeVanish(3, 3)))
// with a function like this:
Vanish makeVanish( int a, int b ) {
    Vanish thing;
    thing.a = a;
    thing.b = b;
    return thing;
}

它发送一个向量以初始化其值,并且该向量包含具有值3、3的结构以初始化值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM