티스토리 뷰

[출처] NeoDreamer's DevCube  ^^

STL 를 사용하면  빌더에서도 이차원 동적배열을 쉽게 구현할 수 있다는 ....
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//[헤더인클루드]
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <vector.h>

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//[선언]
//vector를 활용한 2차원 동적 배열은 vector 를 담는 vector 선
// >> 2개를 붙여쓰면 쉬프트 연산자로 인식해 에러를 발생한다.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vector < vector < String > > vcArray;
int ROW = 10;//행(레코드)
int COL = 20;//열(필드)


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//[초기화 할당]
//ROW 만큼 반복을 하며 원하는 COL 크기의 vector를 만들어 동적 배열 vector에 넣어준다.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for ( int i = 0 ; i < ROW; ++i ) {	// 주어진 ROW 만큼 반복
	vector<String> elem; 			// vector 를 생성하고
	elem.resize(COL); 				// 원하는 COL 크기로 할당
	vcArray.push_back(elem); 		// 배열에 추가
}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//[부연설명]
//vector 를 활용한 배열이기 때문에 위와는 다르게 각 ROW 마다
//원소수(COL 의 크기)를 다르게 설정할 수도 있다.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//[접근방법]
//일반 배열을 접근하듯이 하면 된다
String stemp = vcArray[1][2]; //읽기 [행ROW][열COL]
vcArray[1][2] = "테스트";       //쓰기
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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