ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] vector<int> a(3) 와 vector<int> a[3] 의 차이는 ?
    프로그래밍/C++ 2020. 1. 17. 01:45

    vector<int> a(3)vector<int> a[3]의 차이는 ?


    1. vector<int> a(3) 는 0으로 초기화되어있는 사이즈 3의 a 라는 벡터를 만드는 것을 의미합니다. 

    아주 기본적인 형태의 선언 방식이고 우리가 알고 있는 모든 방식의 접근이 가능합니다.

     

    	vector<int> a(3); //0,0,0 
    	a.push_back(1); //0,0,0,1
    	a.push_back(2); //0,0,0,1,2
    	a.pop_back(); //0,0,0,1
    	cout << a[0]; // 출력 : 0

     

     다른 설명이 없어도 이해할 수 있을 거라 생각하기 때문에 두 번째로 넘어가겠습니다.

     

     

    2. vector<int> a[3]는 모든 요소가 벡터 a 로 이루어진 3칸짜리의 배열을 생성한다고 생각하면 됩니다.

     

     표로 보면 이렇습니다.

     

    1 2 3
    a a a

     

     

    이렇게 되면 한 칸에 존재하는 벡터는 vector<int> a이렇게 선언된 벡터와 동일하게 됩니다.

    따라서 안에 있는 값을 출력해보면 아무것도 나오지 않습니다. 사이즈가 3인 것도 아니라는 말이죠.

     

     

    그럼 이걸 어디에 사용할 수 있을 까요??

     

    그래프를 만들 때 정점이란 게 필요합니다. 저희는 이걸 인접 리스트 또는 연결 리스트를 사용해서 구현을 하죠. 인접 리스트를 사용하는 경우 보통 2차원 배열을 선언해서 간선을 입력합니다. 

     

     

    하지만 vector<int> a[3] 이런식으로 선언을 하게 되면 3개의 a 라는 벡터 각각이 정점이 되는 겁니다.

     

     

    예시를 들고 글을 마치겠습니다.

     

    vector<int> a[3];
    
    	for (int element : a[1]) {
    		cout << element;
    	}
    	// 출력 :
    	
    	a[1].push_back(1);
    	a[1].push_back(2);
    	// 보통은 a.push_back() 을 사용한다. 
    	// 여기서 a[1] 안에 a라는 벡터가 존재함을 알수있다.
    	
    	for (int element : a[1]) {
    		cout << element << ' ';
    	}
    	출력 : 1 2
    	//cout << a[1]; 이런건 불가능

    댓글

Designed by Tistory.