C++の列挙型(enum)の基本と列挙方法をわかりやすく解説
列挙型(enumeration)は、C/C++言語におけるユーザー定義データ型の一つです。整数定数に名前を割り当てることで、プログラムの可読性と保守性が大幅に向上します。列挙型を宣言するには、キーワード「enum」を使用します。
列挙型の構文
列挙型の基本的な宣言方法は以下の通りです。
enum 列挙型名{定数1, 定数2, ....... };ここで、列挙型名はユーザーが自由に付けられる名前で、const1、const2などはフラグ型の値(列挙子)を表します。
列挙型変数の定義方法
「enum」キーワードは、列挙型の変数を定義する際にも使用できます。変数の定義方法には主に2つの書き方があります。
enum colors{red, black};
enum suit{heart, diamond=8, spade=3, club};上記のように、列挙子には明示的に値を代入することも可能です。値を指定しない場合、先頭の要素は0から始まり、以降は前の要素に1を加えた値が自動的に割り当てられます。途中で値を指定した場合は、その次の要素からは指定した値+1から連番が続きます。
サンプルコード
#include <iostream>
using namespace std;
enum colors{red=5, black};
enum suit{heart, diamond=8, spade=3, club};
int main() {
cout <<"The value of enum color : "<<red<<","<<black;
cout << "\nThe default value of enum suit : "<< heart << "," << diamond << "," << spade << "," << club;
return 0;
}実行結果
The value of enum color : 5,6 The default value of enum suit : 0,8,3,4
この例では、colors型では最初の要素redに5を指定しているため、次のblackは自動的に6になります。一方、suit型ではheartがデフォルトの0、diamondに8を明示的に指定、spadeに3を指定しているため、clubは4となります。
列挙型をループで列挙する方法
列挙型の全要素を順番に処理したい場合は、forループを使うのが簡単です。最初の列挙子から最後の列挙子まで繰り返し処理を行うことができます。
サンプルコード
#include <iostream>
using namespace std;
enum suit{heart, diamond, spade, club};
int main() {
for(int i = heart; i<=club; i++) {
cout << "Card Type : " << i << endl;
}
}実行結果
Card Type : 0 Card Type : 1 Card Type : 2 Card Type : 3
このように、列挙子は内部的には整数値として扱われるため、int型のカウンタ変数を使ってforループで順次アクセスできます。なお、C++11以降では範囲ベースfor文やenum class(強く型付けされた列挙型)も利用できるため、より安全でモダンな書き方を選択することも可能です。
-
C++のtypedef宣言とは?使い方と実例をわかりやすく解説
C++におけるtypedefキーワードは、既存の型に新しい名前(別名)を付けるために使用されます。長く複雑な型名を短く読みやすい名前に置き換えることで、コードの可読性と保守性が大きく向上します。typedefの基本的な使い方たとえば、unsigned char型に「BYTE」という新しい名前を付けたい場合は、次のように記述します。typedef unsigned char BYTE;この型定義以降は、識別子BYTEをunsigned char型の省略形として使用できます。BYTE b1, b2;上記のコードは、unsigned char型の変数b1とb2を宣言していることになります。typed
-
C#のEnum.GetNamesメソッドの使い方とサンプルコード
Enum.GetNamesメソッドとはEnum.GetNamesメソッドは、列挙型(enum)に含まれる定数の名前を文字列配列として取得します。戻り値はstring型の配列なので、foreachループなどで処理すれば、列挙型が持つすべての定数名を簡単に表示・活用できます。構文Enum.GetNames(Type)ここでTypeには、対象となる列挙型を指定します。通常はtypeof演算子を使って、列挙型のTypeオブジェクトを渡します。使用例次の例では、Vehicleという列挙型を定義し、Enum.GetNamesメソッドを使ってすべての定数名をコンソールに出力しています。using Syste