構造体、共用体、列挙体
ここでは、C++プログラムにおけるデータ構造の基本である構造体, 共用体, および列挙体について解説します。
概要
編集構造体 (struct)、共用体 (union)、および列挙体 (enum)は、C++で複数のデータを一つのまとまりとして扱うための仕組みです。これらは、データの整理や管理を効率的に行うために使用されます。
構造体
編集構造体は、異なる型のデータを一つのグループとしてまとめることができるデータ構造です。構造体を使うと、関連する複数のデータを一つの単位として扱うことができます。
例
編集次に、構造体を使用して人のデータをまとめる例を示します。
// 構造体の例 #include<iostream> #include<string> struct Person { std::string name; int age; double height; }; auto main() -> int { Person person{"John Doe", 30, 175.5}; std::cout << "Name: " << person.name << std::endl; std::cout << "Age: " << person.age << std::endl; std::cout << "Height: " << person.height << " cm" << std::endl; return 0; }
このプログラムを実行すると、person
という構造体にまとめられたデータを使って、名前、年齢、身長が出力されます。
共用体
編集共用体は、異なるデータ型のメンバが同じメモリ領域を共有するデータ構造です。これにより、メモリを節約することができますが、一度に一つのメンバしか保持できないという制約があります。
例
編集次に、共用体を使用した例を示します。
// 共用体の例 #include<iostream> union Data { int i; float f; char c; }; auto main() -> int { Data data; data.i = 42; std::cout << "Integer: " << data.i << std::endl; data.f = 3.14f; std::cout << "Float: " << data.f << std::endl; data.c = 'A'; std::cout << "Char: " << data.c << std::endl; return 0; }
このプログラムでは、data
という共用体に異なる型のデータを格納し、その内容を順に出力します。ただし、共用体は最後に代入されたデータのみを正しく保持します。
列挙体
編集列挙体は、関連する定数の集まりを定義するためのデータ型です。列挙体を使うと、コードの可読性を高め、特定の値のみを使用することを保証できます。
例
編集次に、列挙体を使用した例を示します。
// 列挙体の例 #include<iostream> enum class Color { Red, Green, Blue }; auto main() -> int { Color color{Color::Green}; if (color == Color::Green) { std::cout << "The color is Green." << std::endl; } else { std::cout << "The color is not Green." << std::endl; } return 0; }
このプログラムでは、Color
という列挙体を定義し、その値を使って条件分岐を行います。列挙体は、整数値に対応する一連の識別子を持つことができます。
まとめ
編集構造体、共用体、列挙体は、データを整理して効率的に管理するための重要な機能です。構造体は異なる型のデータをまとめるのに適しており、共用体はメモリ効率を考慮して使うべきです。列挙体は、コードの可読性と安全性を高めるために利用されます。