这是我第二次使用 C++,我正在尝试移植一些我制作的 Java 代码,但无法理解某些行为。我有一个数据列表,想要创建另一个相同大小的列表,但值默认为零(在Arrays.fill(list, 0);
创建它后使用的 Java 中)。当我尝试在 C++ 中做类似的事情时,我得到了variable-sized object 'list1' may not be initialized
这是一个更好的示例代码:
#include <iostream>
#include <boost/assign/std/vector.hpp> // for 'operator+=()'
using namespace std;
using namespace boost::assign;
int main()
{
cout << "Hello World!" << endl;
vector<short> data;
data += -40, -30,-10, 20, 50;
//int coeff [data.size()];
cout << "data array size is " << data.size() << endl;
short list1 [data.size()] = {0}; //does not work
for (int i =0; i<data.size(); i++) {
cout << "data is " << list1[i] << endl;
}
cout << "********** try 2 **************" << endl;
//this works if I use a actual number to create the list but I want to declare it at runtime
short list2 [5] = {0};
for (int ii=0;ii<5;ii++) {
cout << "data is " << list2[ii] << endl;
}
return 0;
}
就像我提到的,当我谈到 C++ 时,我完全是绿色的(我读过一本书并完成了一些教程),所以我可能会做一些完全错误的事情。如果我不能在运行时并且只能在编译时执行此操作,是否还有其他方法可以用来获得相同的结果?