0
我声明了以下结构的全球结构:错误数组声明:表达式必须有一个恒定的值
typedef struct {
int value;
int index;
}element;
我有k
排序队列的程序,我把在heapSort
(我使用一个数组)每个的最小值。我使用struct中的索引值来跟踪我想从堆中弹出的元素。现在,我要测试的程序不同数目的队列,所以我这样做:
for (int i = 10;i <= 50;i += 10) {
const int k = i;
element a[k];
}
但我得到一个错误:
Expression must have a constant value
有没有什么办法可以“欺骗”了吗?
标准C++不具有可变长度数组(C一样)。改为使用std :: vector。 –
你可以使用'std :: vector a(k)'。 –
Jarod42
'std :: vector a(i);'完全抛弃'k'。而且,如果被允许,无论这是为了什么目的,''中的堆操作将非常方便并为您节省一吨*代码。如果这是一个优先级队列,['std :: priority_queue'](http://en.cppreference.com/w/cpp/container/priority_queue)适配器可以为你节省更多的努力。 –
WhozCraig