在结构体向量中初始化一个向量。

4

我有一个包含向量的结构体向量,但我不知道如何初始化结构体内部的字段。我的代码如下:

struct member {
  vector<pair<int, int> > rival_result;
  int matches;
}
vector<member> ranking(n);

我希望能够将结构体中的向量大小设置为其他向量的大小,并在所有字段(匹配和配对向量的整数)中填充0。

N可能是一个非常大的数字,因此无法手动完成。

谢谢。


C++11或更高版本是否允许?此外,初始化后大小是否可以更改/必须在运行时设置? - Deduplicator
无法使用c++ 11,并且大小在初始化后不能更改。更多信息,请注意此代码是类的私有成员,我需要在创建函数中将其初始化为0,该函数为: Ranking::Ranking(int n); - flapedriza
1个回答

4
编写一个构造函数来设置您的向量大小,该构造函数首先为 member 设置大小:
struct member {
    explicit member (int n) : rival_result(n), matches(0) { }
    vector<pair<int, int> > rival_result;
    int matches;
};

现在创建您的向量:
vector<member> ranking(n, member(n));

谢谢,我不知道 explicit 说明符,明天我会问我的老师是否可以在我的代码中使用它,他们对我们能够使用和不能使用的东西非常严格。 - flapedriza
@flapedriza 在这里使用 explicit 是可选的。它可以防止编译器将构造函数视为从 intmember 的隐式转换,这可能是错误的来源。有关详细信息,请参见此问题 - T.C.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接