어디에 쓰이는고 하면, 컨테이너의 객체들을 들 쑤시고 싶을 때, 함수 객체를 사용해야 할 때, 일일이 함수 객체를 만들어 주기 귀찮을 때, 주로 사용 된다. bind 는 std::bindlst 와 std::bind2nd를 보다 일반화 시킨 함수이다.. bind 는 임의의 함수, 함수 포인터, 함수 객체, 멤버 함수를 함수 객체로 만들 수 있으며, 원하는 위치에 원하는 값을 전달 시킬 수 있는 함수 객체를 만들어 준다. (요구 조건 또한 없다. 묶고 싶다면 bind 라고 외워도 될 정도..) 바인드의 가장 기초가 되는 사용법을 알아보면 #include using boost::bind; int f(int a, int b) { return a + b; } int g(int a, int b, int c) { r..
전체 글 검색 결과
Boost는 개발을 가속시키는 도구이다. 처음 Boost를 shared_ptr 를 사용하기 위해서 썼었다. 그리고 주변에서 만들어서 써야 한다는 말을 듣고, 직접 smart_ptr을 만들었었다. 하지만, 그 기능에 대한 검증이 힘들고, 버그가 있는지 없는지 알 수 없는 상태를 유지해야만 했다. 그리고 어느날, std::pair 을 사용 하다가, 3개 이상을 묶고 싶을 때, 3개 이상을 한번에 선언 하려고 할 때를 위하여, 템플릿 클래스를 만들어서 썻었으나, 만드는 과정 중 부스트의 tuple 을 본 순간, 나는 다시 boost 를 써야만 한다 라고 생각을 굳힌다. Boost 는 개발을 가속시키는 도구이다. 부스트의 한구절 한구절 코드를 곱씹어 보아야 겠다.
경험 많은 개발자라도 상속을 남용 하는 경우가 많이 있다. 상속은 머리에 껌이 달라 붙는것 처럼 띄어내기가 참 어려운 구조이기 때문에, 필요할때만 사용 해야 한다. 자.. 예제코드를 봐보자. 코드 /*예제 1 */ template class MyList { public: bool Insert( const T&, size_t index ); T Access( size_t index ) const; size_t Size() const; private: T* buf_; size_t bufsize_; }; /*예제 1(a) */ template class MySet1 : private MyList { public: bool Add( const T& );// Insert() 호출 T Get( size_t inde..
#define _WIN32_WINNT 0x400 #include #include #include VOID CALLBACK APCProc(ULONG_PTR dwParam) { printf("APCProc callback\n"); } unsigned int _stdcall ThreadProc(LPVOID pParam) { printf("wait 2 seconds in child thread\n"); Sleep(2*1000); HANDLE hThread = (HANDLE)pParam; DWORD dwRet = QueueUserAPC(APCProc, hThread, (ULONG_PTR)NULL); CloseHandle(hThread); return 1; } int main(int argc, char* argv[..
디자인 패턴은 재사용 가능한 코드를 작성하기 위한 도구이다. 이번 항목에서 디자인 패턴을 알아 볼 수 있겠는가? 코드 class string; class Record; class PrimaryKey; class GenericTableAlgorithm { public: GenericTableAlgorithm( const string& table ); virtual ~GenericTableAlgorithm(); /*성공했을 경우 true를 리턴하며, 1. 물리적으로 테이블 레코드를 읽는다. 2. 수행해야 하는 열인지 판단하기 위해 Filter를 실행한다. 3. 수행하는 열의 목록이 완료되었을때 각 열에 대해 ProcessRow를 호출한다. */ bool Process(); private: /*열을 처리해야 ..
우선 객체로 만들 경우의 장점은 1. 쓰레드의 생성과 소멸을 관리 할 수 있다. 2. 1의 장점으로, 쓰레드를 지역 객체로 다룰 수 있다. 3. 쓰레드 객체와 쓰레드에서 사용될 함수만을 따로 관리 하여 코드 정리 및 가독성을 극대화 할 수 있다. 4. 1.2.3의 장점으로 디버깅이 조금이나마 향상 된다. 실제 쓰레드가 종료 되어도, 쓰레드가 사용했던 값들을 보존 및 확인 할 수 있다는 것은 .. 아주 큰 매력이다. 제일 마음에 드는건 4번이다. .... 네트워크에서 디버깅이 어려운데, 쓰레드 때문에 더 어려운 디버깅을 조금이나마 향상 시킬 수 있기 때문이다. .. 현재 객체화된 쓰레드는 성공 하였지만, 객체화된 쓰레드의 인터페이스를 어떻게 구성해야 할지 모르겠다. 우선 사용자의 기준으로 인터페이스를 만드..
최근댓글