我想在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;
}