2008/01/08

vector를 이용한 2차원 동적 배열

STL의 컨테이너인 vector를 이용하여 2차원 동적 배열을 구현해 보았다.


vector를 이용하기 위한 포함 파일을 포함하는 방법은 개발툴 마다 조금씩 다르다.

Visual Studio 의 경우
#include <vector>

using namespace std;



C++ Builder 경우
#include <vector.h>



vector를 활용한 2차원 동적 배열은 vector 를 담는 vector 이다.
선언은 아래와 같다.
vector < vector < int > > vcArray;


선언시 주의해야할 사항은 마지막 angle bracket 2개를 붙여쓰면 쉬프트 연산자로 인식해 에러를 발생한다.

배열을 초기화 하기 위해서 원하는 ROW 만큼 반복을 하며 원하는 COL 크기의 vector를 만들어 동적 배열 vector에 넣어주면 된다. 설명보다는 코드를 보는 것이 이해가 빠를 것이다.
for ( int i = 0 ; i < ROW; ++i ) // 주어진 ROW 만큼 반복

{

vector<int> elem; // vector 를 생성하고

elem.resize(COL); // 원하는 COL 크기로 할당

vcArray.push_back(elem); // 배열에 추가

}



vector 를 활용한 배열이기 때문에 위와는 다르게 각 ROW 마다 원소수(COL 의 크기)를 다르게 설정할 수도 있다. 그때 배열에 접근 할때는 인자가 범위를 벗어나지 않도록 주위를 해야한다.


이렇게 할당한 배열을 삭제할 때는 각각의 ROW 에 포함된 COL 데이터를 삭제하고 마지막으로 ROW 데이터를 삭제하면 된다.
for (int row = 0; row < (int)vcArray.size(); ++row)

vcArray[row].clear();

vcArray.clear();



접근 방법은 일반 배열을 접근하듯이 하면 된다.
int temp = vcArray[1][2]; 

vcArray[1][2] = 3;


Original Post : http://neodreamer-dev.tistory.com/19

No comments :

Post a Comment