Make Unreal REAL.
article thumbnail
코딩 테스트를 위한 자료 구조와 알고리즘 with C++

 

 

C-style 배열의 문제점

  • 메모리 할당, 해제를 수동으로 처리해야 한다.
  • 배열 범위 밖의 원소를 참조하는 것을 검사하지 못한다.
  • 깊은 복사를 제공하지 않는다.

 

std::array

  • 메모리를 자동으로 할당하고 해제한다.
  • array.at(int index) 함수를 이용해 범위 밖 원소 참조에 대한 예외 처리가 가능하다.
  • 배열의 크기가 같은 경우 깊은 복사, 깊은 비교를 지원한다.

 

#include <iostream>
#include <array>

using namespace std;

template <typename T, size_t N>
void print(const array<T, N>& arr)
{
    for (T e : arr)
        cout << e << ' ';
    cout << endl;
}

void main()
{
    array<int, 10> arr1;
    array<int, 4> arr2 = {0, 1, 2, 3};

    try
    {
        // [] 대신 at을 통해 범위 검사
        arr1[0] = arr2.at(4);
    }
    catch (const out_of_range& ex)
    {
        cerr << ex.what() << endl;
    }

    print(arr2);

    // 첫 번째 원소의 참조
    arr2.front() = 6;
    // 마지막 원소의 참조
    arr2.back() = 3;

    // 배열의 시작 주소
    cout << arr2.data() << endl;

    array<float, 5> arr3;
    array<float, 5> arr4 = {0.1, 0.2, 0.3, 0.4, 0.5};
    array<float, 5> arr5 = {0.1, 0.2, 0.3, 0.4, 0.5};

    arr3 = arr4;

    // 모든 원소가 큰지 확인
    cout << boolalpha << (arr3 < arr5) << endl;
    // 모든 원소가 같은지 확인
    cout << boolalpha << (arr3 == arr5) << endl;
}

 

출력

array::at: __n (which is 4) >= _Nm (which is 4)
0 1 2 3 
0x7ffdf506d790
false
true

'자료구조 & 알고리즘 > 코딩 테스트를 위한 자료 구조와 알고리즘 with C++' 카테고리의 다른 글

std::forward_list  (0) 2023.01.24
std::vector  (0) 2023.01.23
동적 크기 배열 구현  (0) 2023.01.21
연결 리스트  (0) 2023.01.19
정적 배열과 동적 배열  (0) 2023.01.19
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그