我有一个类,其成员是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值。
答案 0 :(得分:5)
一个选项是初始化成员初始化列表中的vector
:
DataSample(int n) : data(n) {
}
这使用一个接受大小的构造函数初始化vector
,然后创建vector
个n
元素,所有这些元素都采用适当类型的默认值。< / p>
答案 1 :(得分:3)
std::vector
有constructor,可让您指定矢量的大小。如果你使用
<button id='redirect'>
<script>
document.getElementById('redirect').onclick = function() {
window.location = 'http://example.com/check/' + sld + tld;
};
</script>
然后DataSample(int n) : data(n) { }
的大小为data
,向量中的所有元素都将具有默认值。