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