【问题标题】:How can I fill an array with unimportant values (after declaration)?如何用不重要的值填充数组(声明后)?
【发布时间】:2015-11-19 19:42:11
【问题描述】:

我有一个类,它的成员是 Vector。因此,声明位于受保护的成员区域。我有一个构造函数,它接受(除其他外)一个 int,它指示 Vector 的大小。我将在(有效地)随机索引处向数组中添加单个元素。

我的问题是:如何在声明后使用通用值(0 或其等效结构)初始化 Vector?或者如果做不到这一点,我如何在可能大于向量当前大小的索引处插入元素?

这是我的(简化的)课程:

class DataSample {
protected:
    std::vector<data_value> data;
public:
    DataSample(int n){
        //TODO: initialize Vector here
    }
    void insertValue(int index, struct data_value value){
        //TODO: insert value at index into Vector
    }
}

我目前正在使用 vector.reserve(n) 分配足够的空间(以减少调整大小的延迟),但它不会改变实际大小或内容。

data_value 是一个简单的结构,它只包含一个 uint32_t 值。

【问题讨论】:

  • @JaredDykstra 怎么样?
  • 不是重复的,因为大小在编译时是未知的(它从网络套接字获取值,它实际上可以是任何东西)。
  • 我误解了你的问题...以为尺寸是事先知道的
  • 不用担心,但这就是问题首先存在的原因。如果我知道大小,我可以把它放在声明中,这将是微不足道的。

标签: c++ vector


【解决方案1】:

一种选择是在成员初始化器列表中初始化vector

DataSample(int n) : data(n) {

}

这使用接受大小的构造函数初始化vector,然后创建n 元素的vector,所有这些都采用适当类型的默认值。

【讨论】:

    【解决方案2】:

    std::vector 有一个constructor,允许您指定向量的大小。如果你使用

    DataSample(int n) : data(n) { }
    

    那么data 将具有n 的大小,并且向量中的所有元素都将具有默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2017-03-04
      相关资源
      最近更新 更多