この問題は非常に基本的ですが、これは私の2度目のC++であり、私は作ったが、何らかの行動を理解するのが難しい。データのリストがあり、同じサイズの別のリストを作成したいのですが、値はデフォルトで0です(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++に来るとき、私は(完全に緑のよ、私は本を読んだことがありますいくつかのチュートリアルを行ったので)私が何か完全に間違っていると私に知らせてください。私はこれを実行時にコンパイル時にのみ行うことはできませんが、同じ結果を得るために使用できる他のものがありますか?同じのベクトルを作成し
std::vector<short> list1(data.size(),0);
:
おかげで動的サイズの配列を持っているので、これは違法ではありません++
これはとそれを作成するために
std::vector<short> list1(data.size());
を宣言することができstd::fill(list.begin(), list.end(), 0);
どのように見えるか 'のstd ::ベクトルであります<> 'のためのものです - これは' data'のために使用しています_already_です。単に 'list1'のために使用するだけです。 – ildjarn@ildjarn私はベクトルが可変サイズのリストのためだと思いましたか?固定長のリストを作成する場合はどうすればよいですか? – Lostsoul
'short list1 [data.size()]'は可変サイズリストでの試行ではありませんか? – ildjarn