【问题标题】:Initialize a vector inside a struct vector在结构向量中初始化一个向量
【发布时间】:2014-07-06 12:30:41
【问题描述】:

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

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

我想将结构内向量的大小设置为另一个向量的大小,并在所有字段中设置为 0(匹配和对向量的整数)。 N 可能是一个非常大的数字,因此无法手动完成。 谢谢。

【问题讨论】:

  • C++11 或更高版本是否允许?另外,初始化后大小可以改变/必须在运行时设置吗?
  • Can't use c++ 11, and size can't change after the initialize, for more info, this code is a private member of a class and Ined to initialize it on 0 for the creator函数即:Ranking::Ranking(int n);

标签: c++ vector struct


【解决方案1】:

首先为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));

【讨论】:

  • 谢谢,我不知道显式说明符,明天我会问我的老师是否可以在我的代码中使用它,他们对我们不能使用广告非常严格。跨度>
  • @flapedriza 在这里使用explicit 是可选的。它可以防止编译器将构造函数视为定义从intmember 的隐式转换,这可能是错误的来源。 This question 有详细信息。
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2011-08-07
  • 2014-03-06
  • 2011-05-18
相关资源
最近更新 更多