boost::array를 배워봅시다.

1. Old. Old. Old style char buffer[1024]; …(기타 여러 코드들)… sock.recv(buffer, 1024); 혹시 위와 같은 스타일의 코드를 작성하고 있지는 않으신가요? 물론, 잘 작동하고 문제가 없는 코드일겁니다. 하지만, 여기엔 문제가 하나 있습니다. buffer는 배열이지 객체가 아닙니다. iterator도 없으며, 멤버함수도 없습니다. 불편할 뿐더러 위험합니다. 한번 볼까요? char buffer[1024]; …(기타 여러 코드들. 복잡해서 눈에 잘 안들어옴)… sock.recv(buffer, 4096);더 보기

boost::shared_ptr에 관해!

boost::shared_ptr은 boost/smart_ptr.hpp를 이용해 사용할 수 있는 라이브러리입니다. smart_ptr은 그 이름과 같이, smart pointer들을 다루고 있는 라이브러리로, noncopyable(복사 불가능한) auto_ptr인 scoped_ptr과 레퍼런스 카운팅을 이용해 객체 해제를 자동으로 관리해주는 shared_ptr, shared_ptr에 레퍼런스 카운팅을 하지 않고 단순히 참조만 할 수 있게 해주는 weak_ptr, shared_ptr과 유사한 intrusive_ptr이 있으며, 배열 스타일의 포인터 사용을 위한 scoped_array, shared_array 역시 존재합니다. 지금부터 알아볼더 보기

boost::*를 배워봅시다에 관해.

C++를 밥벌이로 삼은지 1년하고도 9개월 정도 되었습니다. (병특이 1년 하고도 3개월 남았다는 이야기네요. 하아) 그간, 이런 저런 삽질을 하다가 STL을 만났고 boost를 만났습니다만, STL의 강력하지만 모자란 부분을 훌륭히 매꿔주는 boost의 강력함에 매료되어 이곳 저곳에서 사용하기 시작했고, 이 강력함을 좀 널리 알려보고자 시리즈를 쓰고자 마음을 먹었습니다. 감히 한번 써보자고 마음을 먹었습니다. 그 1탄은 boost라이브러리중 가장 큰더 보기

boost::bind를 배워봅시다.

1. 멋진 예제. C++에서 코딩을 하다보면, 다음과 같은 코드를 실행할 일이 종종 생기곤 한다. //무식한 코드 class A { public: void Start(); int SomeWork(int,int,int); }; std::vector<a> v; …(some inits)… for(std::vector<a>::iterator itr = v.begin(); itr != v.end(); ++itr) { // itr은 포인터가 아니므로 이게 더 맞는 표현이라고 한다.. (*itr).Start(); } vector에 담긴 class A의 instance에 대해서,더 보기