본문 바로가기

컴퓨터/C++_STL13

bind1st 와 bind2nd STL 의 bind1st 와 bind2nd 함수의 의미 및 사용법을 살펴 보자. bind1st 와 bind2nd 함수는 모두 binary function object 를 unary function object 로 바꾸는 역할을 한다. 이 때, 그 binary function 의 첫 번째 혹은 두 번째 인자를 지정하느냐에 따라 bind1st 혹은 bind2nd 함수를 사용하게 되는 것이다. 여러 가지 이해해야 할 개념이 있는데 차근차근 살펴 보자. unary function: 인자로 한 개의 값만을 받는 함수. binary function: 인자로 두 개의 값을 받는 함수. unary function 의 예로는 NOT 연산자 같은 것이 있다. 또는 집합에서의 여집합 연산자 역시 unary function .. 2014. 12. 17.
포인터, 참조, 값 형식에 관한 개인적 관례 함수를 만들 때 사용하는 매개변수의 형태를 포인터, 참조, 값 형식 중 어느 것을 사용할 것인가, 에 관한 개인적인 관례(convention) 를 설명하면 다음과 같다. 삶의 다른 많은 것이 그렇듯, 이 관례 역시 이러함을 지양하는 것일 뿐 반드시 이래야 하는 것은 아니다. 우선 두드러지는 특징은 포인터로 호출할 경우 함수 내부에서 그 값을 변경시킨다는 암묵적인 가정이 있고, 참조로 호출할 경우에는 함수 내부에서 그 값을 변경시키지 않는다는 가정이 존재한다. 따라서 참조를 이용하여 호출할 경우 const 지시자가 붙는 경우가 많다. 물론 포인터 역시 동일한 목적으로 사용할 수 있지만(const type const * ) 문법이 살짝 번거로워 이런 식으로 사용하지는 않는다. 이런 식의 구분을 이용하면 함수.. 2014. 5. 9.
포인터에 대한 짤막한 이야기 모든 변수는 주소를 갖는다. 메모리에 생성된 모든 변수는 그 메모리 상에서의 위치, 즉 주소를 갖는다. 이것은 그 변수의 형(type)에 상관없이 해당되는 말이다. 그 변수가 포인터형 변수이든 아니든 이 말은 적용이 된다. 아마도 포인터를 익숙하게 사용하기 힘든 많은 이유 중의 하나가 바로 이 사실을 잊기 때문이 아닌가 생각된다. 위 사실을 상기하면서 얘기를 계속 해 나가보자. 코드에 사용된 대부분의 변수, 메모리에 존재하게 된 변수는 그 변수가 저장될 위치, 즉 주소가 필요하고, 따라서 그 변수의 형(type)에 상관없이 주소를 갖고 있다. 그리고 그 주소에 어떤 값이 들어 가는데, 그 값이 그 변수의 값이 된다. 포인터형 변수는 단지 그 '값'의 위치에 '주소'가 들어 가 있는 것 뿐이다. 물론 포인.. 2014. 4. 2.
파일 읽기 편하게 하기 텍스트 파일을 읽기 편하게 하기 위한 클래스를 만들어 보자. 간단한 사용 예는 다음과 같다. reader r; std::set all_compounds; while(r("compounds_in_treatment.txt",'#','\t')){ all_compounds.insert(r.begin()+2, r.end()); } 목적은 단순했다. while 문 안에 저렇게 해서 텍스트 파일을 한 줄씩 읽어들일 수 있게 하기 위한 것이었다. 더 이상 읽을 줄이 없거나 아니면 아예 애초에 파일을 열지 못했으면 false 가 반환되기 때문에 위처럼 해서 모든 줄을 읽을 수 있다. while 에 걸린 줄에 보면 첫 번째 인자는 파일 이름이고, 두 번째는 주석으로 간주할 줄이 제일 첫 칸에 어떤 문자가 있는지를 지정해 .. 2013. 5. 1.