티스토리 뷰

//int arr[6][5] 배열 선언. 0으로 초기화

vector<vector<int> > arr(6, vector<int>(5, 0));

 

// 삽입

int serial = 0;

for (int i = 0; i < 6; i++)

    for (int j = 0; j < 5; j++)

        arr[i][j] = serial++;

 

// 출력

for (vector<int> vec : arr) {

    for (int n : vec)

        printf("%3d ", n);

    cout << endl;

}




표준출력:

  0   1   2   3   4 

  5   6   7   8   9 

 10  11  12  13  14 

 15  16  17  18  19 

 20  21  22  23  24 

 25  26  27  28  29 


코드 설명

vector<vector<int> > arr(6, vector<int>(5, 0));

ㄴvector<int>형 벡터 6개(가로 6줄)를 할당 한다는 뜻입니다.


vector<vector<int> > arr(6, vector<int>(5, 0));

ㄴ모든 가로 줄은 5개 짜리 0으로 초기화 된 익명의 int 벡터 배열을 생성하여 초기값으로 넣게 됩니다.


※for(머시기:배열) 이런식의 ranged for loop는 C++11 버전 이상부터 지원합니다.



선언
일단 자료형은 정수형 벡터를 자료형으로 가지는 벡터 입니다.
사용은 물론 #include <vector>해서 헤더 파일을 불러 와야 하고
using namespace std; 해서 std::vector를 vector로 바로 쓸 수 있도록 합니다.

생성
vector 생성자는 첫 인자로 할당할 배열의 사이즈, 두번째 인자로 초기값을 보통 씁니다.
즉, vector<int> arr(5,0) 이렇게 쓰면 5개짜리 배열을 생성하고 초기값으로 0을 넣는다는 뜻입니다.
2차원 배열로 생성하는 경우

vector<vector<int> > arr(6, vector<int>(5, 0));

이렇게 되는데, 바깥 벡터는 vector<int>를 자료형으로 갖는 벡터이구요

안쪽 벡터는 int를 자료형으로 갖는 벡터입니다. <int> >부분 시프트 연산자 >>랑 구분해 주기 위해 중간에 공백을 꼭 넣어주세요.


사용

벡터는 연속된 공간에 할당하는 자료형이기 때문에 일반 배열처럼 사용해도 됩니다.

맨 위 코드에 값 삽입 부분을 보시면 됩니다.



C++11 이상 배열 생성 초간편 방법

vector<vector<int> > arr({

    vector<int>( { 0, 1, 2 }),

    vector<int>( { 3, 7, 9, 11 }),

    vector<int>( { 4, 10, 14, 15 }),

    vector<int>( { 0, 4, 5, 6, 7 }),

    vector<int>( { 6, 7, 8, 10, 12 }),

    vector<int>( { 0, 2, 14, 15 }),

    vector<int>( { 3, 14, 15 }),

    vector<int>( { 4, 5, 7, 14, 15 }),

    vector<int>( { 1, 2, 3, 4, 5 }),

    vector<int>( { 3, 4, 5, 9, 13 })

});


댓글
  • 프로필사진 박현균 와... 이제 stl공부를 하고 있는데

    이렇게하는 군요.... 어떻게 보면 당연한건데..

    근데 혹시 vector<int> arr[][5]; 이런 형식은 이차원 배열이 아닌가요??
    (죄송해요. 이글 보자 마자 든 생각을 바로 적네요.)
    2016.01.14 14:21 신고
  • 프로필사진 Favicon of http://sunnyholic.com BlogIcon Sunny Holic 엄.. 맞는것 같은데요 제가 이해가 잘안대네요 2016.01.14 20:08 신고
  • 프로필사진 유태커 관리자의 승인을 기다리고 있는 댓글입니다 2017.04.22 12:57
댓글쓰기 폼
공지사항
Total
314,201
Today
30
Yesterday
74
링크
«   2018/07   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
글 보관함