2017-04-01 102 views
1

我有一個程序,其中我使用的形式的記錄多個數據結構:C++:創建使用for循環

// declaring a struct for each record 
struct record 
{ 
    int number;    // number of record 
    vector<int> content; // content of record  
}; 

在主然後我聲明每個記錄:

record batch_1;   // stores integers from 1 - 64 
record batch_2;   // stores integers from 65 - 128 

凡每批從數字列表中存儲64個整數(在本例中,總數爲128的列表)。我想讓這個程序開放式結束,這樣程序就能夠處理任何列表大小(約束它是64的倍數)。因此,如果列表大小爲256,我需要四條記錄(batch_1 - batch_4)。我不知道我怎樣才能創建的N-多條記錄,但我期待這樣的事情(這顯然不是解決方案):

//creating the batch records 
for (int i = 1; i <= (list_size/64); i++) 
{ 
    record batch_[i]; // each batch stores 64 integers 
} 

如何才能做到這一點,並會的東西的範圍內聲明在for循環中擴展超出循環本身?我想一個數組可以滿足範圍要求,但我不知道如何實現它。

+0

爲什麼不使用'矢量批次(list_size/64)根據需要在循環中'然後初始化它?你已經在使用'vector's了。 – Gasper

+0

「我不知道如何創建N多條記錄」。你在記錄的定義中使用了'vector'。你如何定義它的功能? –

回答

2

與評論中的許多建議一樣,爲什麼不使用C++標準庫提供的可調整大小的矢量:std::vector

所以,而不是這樣:

record batch_1;   // stores integers from 1 - 64 
record batch_2;   // stores integers from 65 - 128 
. 
. 
record batch_n   // Stores integers x - y 

替換爲:

std::vector<record> batches; 

//And to create the the batch records 
for (int i = 1; i <= (list_size/64); i++) { 
    record r; 
    r.number = i; 
    r.content = ....; 
    batches.push_back(r); 
    // You could also declare a constructor for your record struct to facilitate instantiating it. 
} 
2

你爲什麼不試試這個

// code 
    vector<record> v(list_size/64); 
    // additinal code goes here 

現在,你可以訪問您的數據如下

(v[i].content).at(j);