C ++を使用するのはこれが2回目で、作成したJavaコードを移植しようとしていますが、動作を理解するのに問題があります。データのリストがあり、同じサイズの別のリストを作成したいのですが、値はデフォルトでゼロになっています(JavaではArrays.fill(list, 0);
作成後に使用します)。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 ++に関しては完全に緑です(私は本を読み、いくつかのチュートリアルを行いました)ので、私は完全に間違ったことをしているかもしれません。実行時にこれを実行できず、コンパイル時にのみ実行できない場合、同じ結果を得るために使用できるものは他にありますか?