数组声明中的错误:表达式必须具有常量值

时间:2017-04-03 21:20:17

标签: c++ visual-c++

我声明了一个具有以下结构的全局结构:

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];
}

但是我收到了一个错误:

  

表达式必须具有常量值

我有什么方法可以&#34;欺骗&#34;是什么?

1 个答案:

答案 0 :(得分:1)

您声明了array,无法更改数组的大小。要解决此问题,最好使用vector

试试这个:

#include <vector>
vector <element> a(50);

要从vector中弹出元素,请尝试以下操作:

a.erase(a.begin()+index_from_zero);