본문 바로가기

C++ in Windows/STL

vector 실습

요 몇년동안 윈도우 CE기반 MFC를 사용했다.

하지만 앞으로는 Window가 아닌 플렛폼에서도 개발을 해야 될꺼 같다.


물론 아직은 C++이 아닌 언어는 본격적으로 할 생각이 없기 때문에.


그런고로 이제는 MFC에서 쉽게 사용하던 CArray, CList와 같은 클래스를 사용할수 없다 생각하고.

STL을 사용하여 코딩을 하려한다.


그런고로 자문자답.


>> 문제

양수 n를 입력받으면 vector에 n을 기록한다.

음수 n를 입력받으면 현재 데이터의 abs(n)의 값을 삭제한다.

0을 입력받으면 프로그램을 종료한다.



#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void main(void)
{
	vector<int> data;

	while( true )
	{
		int temp;

		cin >> temp;

		if ( temp > 0 )
		{
			// 양수일 경우 vector의 맨 마지막에 데이터 추가.
			data.push_back(temp);
		}
		else if ( temp < 0 )
		{
			vector<int>::iterator it;	// 반복자 생성.

			// <algorithm>에 있는 find()를 이용해 abs(음수)의 위치를 찾는다.
			it = find(data.begin(), data.end(), abs(temp));
			
			// 원하는 데이터가 vector에 없을 경우를 위한 예외처리.
			if( it != data.end())	
				data.erase(it);		// 데이터 삭제.
			
		}
		else
		{
			// 0을 입력하면, 프로그램 종료.
			break;
		}

		{
			// 데이터 확인을 위한 출력 형식.
			cout << "\n<data check="">\n";
			
			for(int i = 0; i < (int)data.size(); i++)
				cout << data[i] << "\n";

			cout << "=-=-=-=-=\n";
		}

	}
}


실행 테스트



처음에는 find() 이후 예외처리를 하지않아 항상 오류가 발생되었다. 

'C++ in Windows > STL' 카테고리의 다른 글

set 실습 2  (0) 2012.07.09
set 실습  (2) 2012.07.09