Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C/C++における配列の短縮初期化表記(Shorthand Array Notation)の使い方

C言語では、配列の要素に同じ値が繰り返し含まれる場合、短縮配列表記(shorthand array notation)を使うことで、コードを簡潔に記述できます。この記事では、その基本的な書き方と動作について解説します。

サンプルコード

#include <stdio.h>
int main() {
   int array[10] = {[0 ... 3]7, [4 ... 5]6, [6 ... 9]2};
   for (int i = 0; i < 10; i++)
      printf("%d ", array[i]);
   return 0;
}

実行結果

7 7 7 7 6 6 2 2 2 2

コードの解説

このプログラム内の以下の宣言は、

int array[10] = {[0 ... 3]7, [4 ... 5]6, [6 ... 9]2};

次の通常の初期化と同じ意味を持ちます。

int array[10] = {7, 7, 7, 7, 6, 6, 2, 2, 2, 2};

つまり、[開始インデックス ... 終了インデックス]値という形式で、「指定した範囲のすべての要素に同じ値を代入する」ことができるのです。

範囲外の要素の扱い

もし配列の途中に値が指定されていない部分(ギャップ)がある場合は、その要素は自動的に0で埋められます。例えば、[0 ... 2]5, [8 ... 9]1 のように指定すると、インデックス3〜7の要素には0が格納されます。

C++での注意点

この短縮表記はGCC拡張機能であるため、C++でも同様の出力が得られますが、コンパイル時に警告(warning)が出力される点に注意してください。移植性を重視するコードでは、標準の初期化方法を使用することをおすすめします。

  1. マージソートを使って配列の転倒数(反転数)を数えるC/C++プログラム

    転倒数(Inversion Count)とは?与えられた配列をソートする際に発生する反転(転倒)の回数を「転倒数(Inversion Count)」と呼びます。転倒数を求める問題は古典的なアルゴリズム問題の一つで、マージソート(Merge Sort)のアルゴリズムを応用することで効率的に解くことができます。この問題では、各要素について「自分より左側にあり、かつ自分より大きな値を持つ要素」の数をすべて数え上げ、その合計を出力します。この処理は、マージソートのマージ(merge)関数の中で実装されます。理解を深めるために、マージ処理で扱う2つの部分配列を例に考えてみましょう。配列の転倒数の定義配列

  2. 【初心者向け】C/C++における多次元配列の初期化方法をわかりやすく解説

    多次元配列とは、次元数が2以上ある配列のことです。本記事では、3×3×3の多次元配列におけるメモリ割り当ての仕組みと、実際に配列を初期化して内容を表示するC++プログラムを紹介します。下図は、次元が3×3×3の多次元配列に対するメモリ割り当ての戦略を示したものです。アルゴリズム多次元配列を初期化するプログラムは、以下の手順で構成されます。Begin 多次元配列の要素を初期化する 配列のサイズを出力する 配列の内容を表示する Endサンプルコード以下は、2行2列の二次元配列を初期化し、そのサイズと内容を出力するC++プログラムです。#include<iostream