본문 바로가기

Programming/C,C++

[C++] 2차원벡터 사용 예시

반응형

1. 벡터를 선언할 때부터 몇행, 몇열을 사용할 지 아는 경우

 

만일 다음과 같이 벡터를 선언과 동시에 메모리를 할당하고 0으로 초기화하고 싶다면 ??

아래와 같이 소스코드를 작성하면 된다.


	vector<vector<int> > v1(6, vector<int>(5, 0));	// 6칸 만들고, 그 안을 vector<int>(5,0)으로 채운다
													// vector<int>(5,0) : vector를 5칸 만들고, 그 안을 0으로 채운다.
	
	v1[0][0] = 1;	//벡터의 메모리가 이미 할당되어 있으니 바로 접근이 가능하다.
	v1[5][4] = 20;	//벡터의 메모리가 이미 할당되어 있으니 바로 접근이 가능하다.

	cout << "v1[0][0] = " << v1[0][0] << '\n';
	cout << "v1[5][4] = " << v1[5][4] << '\n';

 

결과

벡터를 선언하면서 이미 메모리할당까지 했기때문에 push_back()메서드로 변수를 넣어줄 필요없이 바로 넣어주면 되는 것이다.

 

 

2. 벡터를 선언할 때 몇개의 열을 사용하는지만 아는 경우

만일 2차원 벡터를 원하는 열만큼만 선언하되, 각 행안에는 메모리할당도, 값도 넣고싶지 않을때는?


	vector<vector<int> > v1(6);	// 벡터를 6칸 만든다.

	v1[0].push_back(99);	//벡터에 메모리가 할당되어있지 않으므로 push_back을 통해 할당하여 값을 넣어야한다.
	cout << "v1[0][0] = " << v1[0][0] << '\n';		// 99
	cout << endl;
	cout << endl;

 

v2[0].push_back(99) 실행 후
결과

벡터라는 공간만 할당되었지 그 안에 값이 들어가있는 상태가 아니므로 값을 넣을때는 위와같이 push_back()메서드를 통해 값을 할당해야한다.

 

 

3. 벡터를 선언할 때 행과 열을 몇개까지 사용하는지 모르는 경우

필요에 따라 행과 열을 추가하기 위해 일단은 벡터의 행과 열도 생성하지 않는 경우는?

어떤 벡터의 메모리 주소만 할당되었지 메모리가 할당되지 않았다.

 


	vector<vector<int> > v1;

	v1.push_back(vector<int>());
	v1[0].push_back(10);
	cout << "v1[0][0] = " << v1[0][0] << '\n';


v3.push_back(vector<int> ()); 명령을 수행하면서 열이 하나 추가된다.

결과

 

반응형