Skip to content

Latest commit

 

History

History
167 lines (114 loc) · 3.32 KB

10.array.md

File metadata and controls

167 lines (114 loc) · 3.32 KB

배열

여러개의 변수를 한번에 생성합니다.

배열은 메모리에서 여러개의 연속된 공간에서 할당됩니다.

배열에는 인덱스로 접근합니다.

1차원 배열 만들기

10칸의 연속된 배열을 만들어 봅니다.

#include<iostream>
using namespace std;

int main() {
    int i[10];

    return 0;
}

초기화의 중요성

#include<iostream>
using namespace std;

int main() {
    int i[10];

    cout << i[5] << endl;

    return 0;
}

Q : 위와 같이 코딩하면 배열에 어떤 값이 들어가 있나요?

#include<iostream>
using namespace std;

int main() {
    int i[10] = {};

    cout << i[5] << endl;

    return 0;
}

이러한 문제를 해결하기 위해 전부 0으로 할당할 수 있습니다.

(int i[10] = {0,0,0,0,0,0,0,0,0,0};처럼 개별적으로 지정할 수도 있습니다.)

배열 출력하기

배열을 출력합니다.

이 예제 코드에서는 보기쉽게 " | "를 사용했습니다.

#include<iostream>
using namespace std;

int main() {
    int i[10] = {};

    for (int index = 0; index < 10; index++) {
        cout << " | ";
        cout << i[index] ;
        cout << " | ";
    }
    cout << endl;

    return 0;
}

2차원 배열 만들기

10*10 배열을 만들어 봅니다.

#include<iostream>
using namespace std;

int main() {
    int i[10][10];

    return 0;
}

2차원 배열에서도 마찬가지로 int i2[10][10] = { {1,1,1},{2,2,2} };으로 특정 값을 특정 위치에 넣을 수 있습니다.

C++11에 추가된 새로운 배열

벡터와 비슷한 조건으로(이 내용은 후반부에 위치할 예정입니다), 메모리의 스택에 연속적으로 요소들을 배치할 수 있습니다.

요소들이 메모리안 특정 지역에 모여있도록 배치하므로, CPU에서 해당 요소들을 좀 더 빠르게 처리할 수 있습니다.

또한 생성자, 소멸자, 복사 생성자, 대입 연산자를 지원하므로, 좀 더 C++다운 배열이라고 할 수 있습니다.

#include <iostream>
#include <array>

using namespace std;

int main() {
    array<int, 10> arr = {1, 2, 3, 4, 5};

    auto it = arr.begin();

    while (it != arr.end()) {
        cout << *it << endl;
        it++;
    }

    return 0;
}
  • auto : 자동으로 타입을 지정합니다.

과제

  • 과제-1 : 위에서 실습한 2차원 배열을 출력하기 (힌트 : array[i][j])

  • 과제-2(1) : 2차원 배열로 지뢰찾기 보드만들기

예시 :

[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
  • 과제-2(2) : 2차원 배열로 지뢰찾기의 확률 40%의 지뢰 세팅하기

(rand()를 이용하시기 바랍니다.)

예시 :

[■][ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][■][ ][ ][■][ ][■][ ]
[ ][■][ ][ ][■][ ][ ][ ][ ][ ]
[ ][ ][■][ ][ ][■][ ][ ][ ][ ]
[■][ ][ ][ ][■][ ][ ][■][ ][ ]
[ ][■][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][■][ ][ ][■][ ][■][ ]
[ ][ ][ ][ ][■][ ][ ][ ][ ][ ]
[■][ ][■][ ][ ][ ][■][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]