我有一个程序,我使用表格的记录:
// 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循环中声明的内容的范围是否会超出循环本身?我想一个数组会满足范围要求,但我不确定如何实现它。
答案 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);