2015-11-19 48 views
1

我有一個類,它有一個Vector的成員。因此,該聲明位於受保護的會員區。我有一個構造函數,它需要(除其他外)一個int,它指示Vector的大小。我將在(有效)隨機索引處將單個元素添加到數組中。我怎樣才能填充一個數組(不含重要值)(聲明後)?

我的問題是:如何初始化聲明後的泛型值(0或其結構等效)的向量?或者失敗了,我該如何在一個可能大於矢量大小的索引處插入元素?

這是我(簡化)類:

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

@JaredDykstra如何? – NathanOliver

+0

不是重複的,因爲大小在編譯時是不知道的(它從網絡套接字中獲取值,它實際上可以是任何東西)。 – GreySage

+0

我誤解了你的問題......認爲尺寸已經提前知道 –

回答

5

一種選擇是在一個成員初始化列表初始化vector

DataSample(int n) : data(n) { 

} 

使用一個構造函數的大小這將初始化vector,然後創建nvector一個元素,所有這些都需要在相應類型的默認值上。

3

std::vector有一個constructor,它允許您指定矢量的大小。如果您使用

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

然後data將有大小n和所有的矢量元素都會有默認值。

相關問題