[解決済み] Array[n] vs Array[10] - 配列を変数で初期化する場合と実数で初期化する場合
2022-10-17 16:29:43
質問
私のコードに次のような問題があります。
int n = 10;
double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
以下のようなエラーを返します。
error: variable-sized object 'tenorData' may not be initialized
一方
double tenorData[10]
は動作します。
誰か理由を知っていますか?
どのように解決するのですか?
C++では、可変長配列は合法ではありません。G++ では、(C が許可しているため) 拡張機能としてこれを許可しているので、G++ では (-pedantic
C++ の標準に従うことについて)、できるようになります。
int n = 10;
double a[n]; // Legal in g++ (with extensions), illegal in proper C++
もし、quot;可変長配列(C++では、適切な可変長配列は許可されていないので、quot;動的サイズ配列と呼ぶ方がよい)が必要なら、自分で動的にメモリを確保しなければならない。
int n = 10;
double* a = new double[n]; // Don't forget to delete [] a; when you're done!
あるいは、もっといいのは、標準的なコンテナを使うことです。
int n = 10;
std::vector<double> a(n); // Don't forget to #include <vector>
それでもちゃんとした配列が欲しい場合は 定数 ではなく 変数 ではなく、作成時に
const int n = 10;
double a[n]; // now valid, since n isn't a variable (it's a compile time constant)
同様に、C++11で関数からサイズを取得したい場合は
constexpr
:
constexpr int n()
{
return 10;
}
double a[n()]; // n() is a compile time constant expression
関連
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み】なぜ可変長配列はC++の標準に含まれないのですか?