C++ 数组声明中出错:表达式必须具有常量值
我声明了具有以下结构的全局结构:C++ 数组声明中出错:表达式必须具有常量值,c++,visual-c++,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; eleme
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];
}
对于(int i=10;i您声明了一个数组
,数组的大小无法更改。要解决此问题,最好使用向量
试试这个:
#include <vector>
vector <element> a(50);
标准C++没有可变长度数组(C有)。请改用std::vector。您可以使用std::vector a(k)
std::vector a(i);
并将k
全部丢弃。仅供参考,如果出于任何目的允许,则适配器中的堆操作可以为您节省更多的工作。请参阅修复它。谢谢!
a.erase(a.begin()+index_from_zero);