簡単な質問:
私の課題では、ファイル内の単語を数え、その頻度を追跡するように求められました。周波数の並列 int 配列を作成します。
並列配列は特別なデータ構造ですか、それとも単に 2 つの配列を作成していて、一方が他方に依存していることを意味しますか? たとえば、2 つの動的配列を作成し、for ループからの i 変数に関してループ内で両方を更新します。
簡単な質問:
私の課題では、ファイル内の単語を数え、その頻度を追跡するように求められました。周波数の並列 int 配列を作成します。
並列配列は特別なデータ構造ですか、それとも単に 2 つの配列を作成していて、一方が他方に依存していることを意味しますか? たとえば、2 つの動的配列を作成し、for ループからの i 変数に関してループ内で両方を更新します。
そのような並列配列データ構造はありません。
2 つの配列を作成し、それらを並行してアドレス指定できます。
std::pair
、または(おそらく当面のタスクに「正しい」もの)std::unordered_map
(またはおそらくstd::map
代わりに)の配列を作成するなど、いくつかの代替手段があります。
並列配列は、基本的にあなたが質問で主張するものです。これは、インデックスで接続された 2 つの異なる配列です。
たとえば、温度の周波数をカウントする並列配列は次のようになります。
int tempVal [100];
size_t tempCount[100];
インデックス 42 の温度値の周波数は で与えられtempCount[42]
ます。
純粋主義者は、次のような構造の単一の配列を提供する方が良いと主張します (そして彼らには一理あります)。
typedef struct {
int val;
size_t count;
} tFreq;
tFreq tempFreq[100];
C++には、これを行うコレクションがありますstd::pair
. ただし、割り当てが特に並列配列を必要とする場合は、そのstd::pair
ように見なされないのではないかと思います。
特別な構造はなく、常にプリミティブで構成されています。