'Code Snippets'에 해당되는 글 16건

  1. 2010.09.03 boost::bind 활용
  2. 2010.08.26 STL bind
  3. 2010.08.25 Type Traits
  4. 2010.08.25 Delete STL Container
  5. 2010.08.20 boost 관련 유용한 링크 모음
  6. 2010.08.20 Boost Thread
Code Snippets/Boost2010. 9. 3. 15:44
코드의 미묘한 중복을 줄이는데 템플릿만한 것이 없다고 생각한다.
보통 아래와 같은 패턴을 가진 함수들... 즉 Value와 Data의 타입이 다르지만 뭔가 동일한 루틴을 가진 함수들...
이런 함수들이 여러개 있다면, 주저 없이 boost::bind를 사용해서 중복을 줄여보자.
( STL의 bind도 가능하지만, mem_fun에서 받을 수 있는 인자는 1개 뿐인 반면 boost는 8개다 )



Code Snippet

결과
(Result: 1 (Sum: 3 | Sum2가 template이 아니라면 간단히 호출 가능
(Result: 1 (Sum: 3 | Sum2가 template이라면 mem_fn을 명시적으로 호출
(Result: 1 (Sum: 3 | mem_fn을 바인드 시켜서, 나중에 인자와 함께 호출
(Result: 1 (Sum: 3 | 함수 자체를 funtion에 바인드도 가능
(Result: 1 (Sum: 6 | 인자3개짜리가 필요할 때도 간편하게 사용

'Code Snippets > Boost' 카테고리의 다른 글

함수 호출 연기 & 함수 타입 캐스팅  (0) 2010.09.17
Nested Bind  (0) 2010.09.09
Generalized Function Pointers  (0) 2010.09.06
boost 관련 유용한 링크 모음  (0) 2010.08.20
Boost Thread  (0) 2010.08.20
Posted by codevania
Code Snippets/Template2010. 8. 26. 12:55

포인터를 요소로 가지는 컨테이너에서 요소를 검색하기 위해 이것저것 해봤다.
BinfunToAdaptMemfun 클래스는 자체 제작한 클래스인데... 왠지 배보다 배꼽이 더 커진다는 느낌이다.
4번 또는 5번의 방법을 사용하는 것이 무난하다는 결론이다.
결론은 8번. boost의 lambda를 사용하는 것이다. -_-!!
컴파일 시간만 감수할 수 있다면, 최고의 답인 것 같다.




6번을 위한 뻘짓 클래스. std::mem_fun과 std::ptr_fun의 조합;; 


'Code Snippets > Template' 카테고리의 다른 글

Type Traits  (0) 2010.08.25
Delete STL Container  (0) 2010.08.25
Posted by codevania
Code Snippets/Template2010. 8. 25. 14:41

enum인지, Union인지, 부모 클래스인지, 파생가능한지... 등등에 대해 어떻게 알 수 있나?

아래 [ Compiler Support for Type Traits ]를 참조하자.
http://msdn.microsoft.com/en-us/library/ms177194.aspx

[ TypeTraits.h ]


[ TypeTraits를 사용한 테스트 코드 ]



사용예를 한 가지 들면...
패킷을 직렬화 할 때, 직렬화 가능한지 여부를 판단하기 위해 사용된다.

'Code Snippets > Template' 카테고리의 다른 글

STL bind  (0) 2010.08.26
Delete STL Container  (0) 2010.08.25
Posted by codevania
Code Snippets/Template2010. 8. 25. 12:15

컨테이너가 어떤 것이든지 포함하는 아이템 포인터를 알아서 삭제해주는 함수를 한줄로 작성해보자.
또, 이런 컨테이너가 재귀적으로 다른 컨테이너를 포함한다고 하더라도 한줄 짜리 함수면 좋겠다.

1. 일단 템플릿 함수가 필요할 것이다.


2. 위의 템플릿 함수에서 사용하는 함수자가 필요하군.


3. 재귀적으로 호출하기 위해서는 템플릿 특화를 사용해야 한다.

'Code Snippets > Template' 카테고리의 다른 글

STL bind  (0) 2010.08.26
Type Traits  (0) 2010.08.25
Posted by codevania
Code Snippets/Boost2010. 8. 20. 12:54

boost example codes 
  - http://www.kmonos.net/alang/boost/classes/

boost thread examples
  - http://aszt.inf.elte.hu/~gsd/klagenfurt/material/ch03s06.html

The Boost.Threads Library
  Dr.Dobb's의 아티클
  - http://www.drdobbs.com/cpp/184401518;jsessionid=XOBCWNJJ0HSSJQE1GHOSKH4ATMY32JVN

Threading with Boost
  좀 간단한 예제지만, 설명이 자세하다.
  - http://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html

Multithreading in C++0x
  tr1에 대한 사용법이지만, std를 boost 네임스페이스로 바꿔서 보면 됨ㅋ
  - http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-1-starting-threads.html

Mutithreading tutorial
  boost::thread 라이브러리에 관한 내용만 있는 것이 아님
  boost::thread 라이브러리를 사용하면서 멀티스레드에 대해 정말 자세히 설명해주고 있다.
  - http://www.paulbridger.com/multithreading_tutorial/

EmptyCrate Software
  thread에 관한 팁 모음
  - http://blog.emptycrate.com/taxonomy/term/38

'Code Snippets > Boost' 카테고리의 다른 글

함수 호출 연기 & 함수 타입 캐스팅  (0) 2010.09.17
Nested Bind  (0) 2010.09.09
Generalized Function Pointers  (0) 2010.09.06
boost::bind 활용  (0) 2010.09.03
Boost Thread  (0) 2010.08.20
Posted by codevania
Code Snippets/Boost2010. 8. 20. 12:31

1. 뮤텍스 사용법 - 간단





2. condition 변수 간단 사용법


3. 컨디션 변수 사용하여 Multi Reader & Single Writer


참조
- http://www.boost.org/doc/libs/1_44_0/doc/html/thread.html
- http://aszt.inf.elte.hu/~gsd/klagenfurt/material/ch03s06.html
- http://www.kmonos.net/alang/boost/classes/thread.html

'Code Snippets > Boost' 카테고리의 다른 글

함수 호출 연기 & 함수 타입 캐스팅  (0) 2010.09.17
Nested Bind  (0) 2010.09.09
Generalized Function Pointers  (0) 2010.09.06
boost::bind 활용  (0) 2010.09.03
boost 관련 유용한 링크 모음  (0) 2010.08.20
Posted by codevania