본문 바로가기

2009/0226

알고리즘.... 알고리즘이란 주어진 문제를 해결하기 위한 잘 정의도니 동작들의 유한 집합이다. 알고리즘에는 우선 주어지는 문제가 있고 이 문제를 해결하기 위한 순서적ㅇ니 동작들이 있다. 이 동작들은 또한 자료 구조를 필요로한다. 알고리즘을 개발하는데 가장 먼저 선행되어야 할 것은 바로 주어진 문제를 잘 이해하는 것이다. 주어지는 문제는 문제 그 자체만이 아니라 문제가 주어지는 상황도 포함이 된다. 문제가 주어지는 상황은 문제를 해결하는 데 이용할 수 있는 자원들을 포함하고 있고, 문제를 해결하는데에 제한이 되는 요소들도 포함할 수 있다. 이러한 문제를 잘 이해하고 난 후에야 알고리즘을 생각할 수 있다. - 알고리즘을 가장 적절히 한글로 표현한다면 방법이 될 것이다. 두 정수의 곱셈 에 대한 알고리즘 a la russe .. 2009. 2. 23.
C++ 예외 처리 기본적인 예외 처리 메커니즘( try, catch, throw) try - 예외 발생에 대한 검사 범위를 설정할 떄 사용된다. 즉 try 블록으로 쌓여진 범위는 예외 상황이 발생하였는지에 대한 검사 대상의 범위가 된다. try{ /*예외 발생 예상지역 */ } catch - 예외를 처리하는 코드 블록을 선언할 때 사용한다. try 블록내에서 발생한 예외 상황을 처리하는 코드가 존재하는 영역으로서, 그 형태가 마치 리턴 타입 없는 함수와 유사하다. catch(처리되어야 할 예외의 종류){ /* 예외를 처리하는 코드가 존재할 위치 */ } try와 catch catch 블록은 항상 try 블록 뒤에 바로 이어서 등장해야 한다. 그래서 보통은 try와 catch를 하나의 문장으로 간주한다. try{ /* 예외.. 2009. 2. 18.
use of class template requires template argument list ->컴파일 에러 어이상실 ㅋㅋ 내가 중요하다고 해놓고..내가 바로 만들떄 뺴먹엇다 ㅡ.ㅡ;; 역시 프로그램을 만들어야한다. 템플릿 변수()가 사용되고 있는 함수에 를 추가하지 않았을 경우 발생하는 에러. template //void MyClass::Print() void MyClass::Print() { cout 2009. 2. 18.
클래스 템플릿! 클래스 템플릿도 함수 템플릿과 같은 개념으로 접근하면 어려울 것이 없다. ex) #include using std::endl; using std::cout; template class Data { T data; public: Data(T d){ data=d; } void SetData(T d){ data = d; } T Get Data(){ return data; } }; 여기서 주의해야될것은 템플릿이라고 해도 다른 자료형 선언이 가능하다는 것이다. for문을 리려면 int 형 변수가 있어야 하지 않겠는가? 함수가 리턴하지 않으면 void 선언도 해줘야하지 않겟나? 그래서 그렇군.ㅋㅋ 위에서 정의한 클래스 템플릿 기반으로 객체를 생성하는 main 함수 소스 int main(void) { Data d1(0.. 2009. 2. 18.