我正在为学校做一个项目,我很难把桶组合在一起。
这是我现在的方法。
void combineBuckets() {
for (unsigned int i = 0; i < numBuckets; ++i) {
auto bucket = globalBuckets->getBucket(i);
for (unsigned int j = 0; j < globalBuckets->getNumItemsInABucket(i); ++j) {
list[j] = bucket[i];
}
}
}globalBuckets是我正在使用的类的全局对象。getBucket()返回桶,getNumBuckets()返回桶中的项数。
我遇到的主要问题是内环。指示说:
globalBuckets中拿出来这些是变量:
unique_ptr<unsigned long[]> list;
unique_ptr<ManyBuckets> globalBuckets;
vector< vector<unsigned long> > arr;arr是ManyBuckets类中的一个私有方法。
这个程序应该获取n数量的桶,并将它们组合到列表数组中。
发布于 2019-07-23 04:51:20
bucket[i]应该是bucket[j]和list,假设它指向一个足以容纳所有存储桶的数组,那么应该使用一个索引来对每个插入进行增量。因此,将其更改为:
void combineBuckets() {
int idx = 0;
for (unsigned int i = 0; i < numBuckets; ++i) {
auto bucket = globalBuckets->getBucket(i);
for (unsigned int j = 0; j < globalBuckets->getNumItemsInABucket(i); ++j) {
list[idx++] = bucket[j];
}
}
}https://stackoverflow.com/questions/57156811
复制相似问题