C ++:使用for循环创建多个数据结构

时间:2017-04-01 17:47:32

标签: c++ struct scope

我有一个程序,我使用表格的记录:

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

在main中我然后声明每条记录:

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-many记录,但我正在寻找类似的东西(这显然不是解决方案):

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

如何做到这一点,并且for循环中声明的内容的范围是否会超出循环本身?我想一个数组会满足范围要求,但我不确定如何实现它。

2 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:0)

你为什么不试试这个

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

现在,您可以按照以下方式访问您的数据

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