动态大小的整型列表



我想在c++中创建一个int列表,但是它根本没有意义。

我也不希望它的大小是静态的。

我试过了,但是"数组大小"必须在没有初始化项的新表达式中指定,我该怎么办?

int* list = {};
int* list = new int[];
int list[];

完整代码
#include <iostream>
using namespace std;
int* list = new int[];
int main() {
int num;
cout << "Select number > ";
cin >> num;
rozloz(num, list);
for (int j = 0; j < sizeof(list)/sizeof(list[0]); j++) {
cout << list[j] << endl;
}
}
int avaible[] = { 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 };
void rozloz(int num, int* list) {
int i = 0;
int i2 = 0;
while (num > 0) {
int current = avaible[i];
if (current > num) {
i++;
continue;
}
list[i2] = current;
num -= current;
i2++;
};
}

数组大小必须在new表达式中指定而没有初始化项,我该怎么办?

根据错误消息,您应该在创建数组时指定大小。这个大小决定了数组有多少个元素。也就是说,通常不应该使用分配new表达式。请参阅答案末尾的推荐解决方案。

sizeof(list)/sizeof(list[0])

这是错误的。这只适用于数组。我建议对数组使用std::size,这样你就不会遇到这个问题,因为程序会安全地编译失败,而不是给你错误的大小。

list的类型不是array类型。类型为"指向int"的指针。它指向动态数组的第一个元素。

创建动态数组最方便的方法是使用标准库中的std::vector。例子:
std::vector<int> rozloz(int num) {
std::vector<int> list;
//...
list.push_back(current); // add elements like this
//...
return list;
}

最新更新