Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 配列の動的割り当て | 動的メモリ割り当て
C++ポインタと参照
セクション 4.  3
single

single

book配列の動的割り当て

メニューを表示するにはスワイプしてください

動的割り当てがなぜ必要なのかを探る前に、静的配列と動的配列の特徴を簡単に振り返ります。

静的配列

  • 固定サイズ: 宣言時に配列のサイズが決まり、実行時に変更できません。
  • コンパイル時のメモリ割り当て: 静的配列に必要なメモリはコンパイル時に割り当てられます。

動的配列

  • リサイズ可能: 動的配列は実行時にサイズ変更が可能であり、プログラムの要件の変化に柔軟に対応できる;
  • 実行時のメモリ割り当て: 動的配列のメモリはプログラムの実行中に割り当てられる。

静的アプローチの制限

現在の月で経過した各日に対してパフォーマンススコアの入力をユーザーに促すプログラムを考える。

残念ながら、これを静的配列で実現することはできない:

main.cpp

main.cpp

copy
12345678910
#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(&currentTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Note
注意

これはコンパイルエラーになります。なぜなら、day_passed定数式ではなく、月の日付の実行時の値に依存するためです。

そのため、静的配列の代わりに動的に確保された配列を使用する必要があります。

タスク

スワイプしてコーディングを開始

気象学者として、一日の気温データを分析する場面を想像してください。

ここでは、ポインタ関数を使って動的に確保された配列データを操作します。

  1. 変数sumを0に、minTempmaxTempを配列の最初の要素に初期化。
  2. インデックスtempsを0からforまで使い、iループで配列hoursを走査。
  3. 各要素temps[i]の値をsumに加算。
  4. temps[i]minTempより小さい場合、temps[i]minTempを代入。
  5. temps[i]maxTempより大きい場合、temps[i]maxTempを代入。
  6. sumhoursで割り、平均気温を計算して変数averageに格納。
  7. minTempmaxTempaverageの値をコンソールに出力。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  3
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt