programming language/C++

C++ 복합데이터

metamong-data 2025. 1. 13. 14:23
728x90
반응형

개요

C++에서 복합 데이터 유형은 기본 데이터 유형을 확장하여 더 복잡한 데이터 구조를 만들 수 있게 해줍니다. 구조체, 공용체, 열거형과 같은 전통적인 복합 데이터 유형과 현대 C++에서 제공하는 std::arrayrange-based for 구문에 대해 설명합니다.

1. 구조체 (Structure)

특징

  1. 사용자 정의 데이터 유형으로 여러 변수를 하나의 단위로 묶을 수 있습니다.

  2. 서로 다른 자료형을 포함할 수 있습니다.

예제

#include <iostream>
using namespace std;

struct Point {
    int x;
    int y;
};

int main() {
    Point p1 = {10, 20};
    cout << "Point coordinates: (" << p1.x << ", " << p1.y << ")" << endl;
    return 0;
}

출력

Point coordinates: (10, 20)

2. 공용체 (Union)

특징

  1. 모든 멤버가 동일한 메모리 공간을 공유합니다.

  2. 한 번에 하나의 멤버만 저장할 수 있습니다.

예제

#include <iostream>
using namespace std;

union Data {
    int i;
    float f;
};

int main() {
    Data d;
    d.i = 10;
    cout << "Integer: " << d.i << endl;
    d.f = 3.14;
    cout << "Float: " << d.f << endl;
    return 0;
}

출력

Integer: 10
Float: 3.14

주의

공용체는 메모리를 절약할 수 있지만, 하나의 멤버만 유효하므로 주의해서 사용해야 합니다.


3. 열거형 (Enumeration)

특징

  1. 상수 집합을 정의합니다.

  2. 각 상수는 정수값을 가지며, 기본값은 0부터 시작합니다.

예제

#include <iostream>
using namespace std;

enum Color { Red, Green, Blue };

int main() {
    Color favorite = Green;
    cout << "Favorite color code: " << favorite << endl;
    return 0;
}

출력

Favorite color code: 1

4. std::array (정적 배열)

특징

  1. C++ 표준 라이브러리에서 제공하는 고정 크기 배열입니다.

  2. 범위 검사를 지원하며, STL과 호환됩니다.

예제

#include <iostream>
#include <array>
using namespace std;

int main() {
    array<int, 5> arr = {1, 2, 3, 4, 5};
    for (size_t i = 0; i < arr.size(); i++) {
        cout << "Element " << i << ": " << arr[i] << endl;
    }
    return 0;
}

출력

Element 0: 1
Element 1: 2
Element 2: 3
Element 3: 4
Element 4: 5

5. range-based for

특징

  1. C++11에서 도입된 구문으로, 컨테이너의 모든 요소를 순회하는 데 사용됩니다.

  2. 기존 for 루프보다 간결하고 오류 가능성이 적습니다.

예제

#include <iostream>
#include <array>
using namespace std;

int main() {
    array<int, 5> arr = {1, 2, 3, 4, 5};
    for (int num : arr) {
        cout << num << " ";
    }
    return 0;
}

출력

1 2 3 4 5

결론

C++에서 복합 데이터 유형과 현대적인 배열 및 반복 구문은 다양한 데이터 구조와 작업을 단순화하고 효율적으로 처리할 수 있습니다. 이러한 기능을 잘 활용하면 코드의 가독성과 안정성을 높일 수 있습니다.

728x90