我有一个类,其成员是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
}
}
Run Code Online (Sandbox Code Playgroud)
我目前正在使用vector.reserve(n)来分配足够的空间(以减少调整大小延迟),但它不会改变实际大小或内容.
data_value是一个简单的结构,只包含一个uint32_t值.
一种选择是初始化vector成员初始化列表:
DataSample(int n) : data(n) {
}
Run Code Online (Sandbox Code Playgroud)
这将初始化vector使用一个构造函数在大小,然后创建vector的n元件,所有这些都采取了适当类型的默认值.