2017-04-01 142 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);