본문 바로가기

책 정리/Effective STL

(52)
Effective STL 중고책 구입 학원에서 빌려서 다 봣었는데, 한번 더 볼겸 해서, 책을 사야겠다 생각 했었는데, 때마침 데브피아에서 중고책을 팔고 있는 것을 발견하고, 구입을 했다. 금액은 7천원, 책 상태는 깨끗 책 정보 링크 : http://book.naver.com/bookdb/book_detail.php?bid=2122929
항목 50 : STL 관련 웹 싸이트와 친구하자 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 무슨 말이 필요하랴? 많은 정보가 있으니 즐겨찾기에 추가하시고 탐험하길! SGI STL 싸이트 : http://www.sgi.com/tech/stl/ STLport 싸이트 : http://www.stlport.org/ Boost 싸이트 : http://www.boost.org/ 이상!
항목 49 : STL에 관련된 컴파일러 진단 메세지를 해석하는 능력을 가지자. 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 STL 에서 에러가 한번 났다하면, 정말 많은 오류메세지를 토해낸다. 그렇기 때문에 수 많은 사람들은 이것을 보다 줄이기 위해서 보다 보기 쉽게하기 위해서 많은것들을 알아냈다. 아래 코드를 컴파일 보시라 #include int main( void ) { std::string s(10); return 0; } 쉬운것은 따라가면 파악할수 있지만 큰것은 정말 힘들것이다. 그래서 이런 문제를 해결하기 위해 STL 에러 해독기라는 프로그램이 등장했다. 자세한 내용..
항목 48 : 용도에 맞는 헤더를 항상 #include 하자. 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 당연히 용도에 맞는 것을 #include 해야지만 컴파일이 되겠지만, 동일 소스로 여러 종류의 컴파일러에서 돌려보면, 안되는 경우가 있다. 왜냐하면 함수의 작성에 대해서는 표준화가 이루어져있지만, #include 헤더에 관해선 정의되어 있는게 없기 때문에 컴파일러 마음데로 파일 관계를 만들수 있기 때문이다. 조금 더 부지런히 용도에 맞는 헤더파일을 #include 한다면, 이식에 관련된 에러를 조금이라도 줄일수 있다고 한다. STL에 관련하여, 여러 컴파..
항목 47 : 쓰기 전용(write-only) 코드는 만들지 말자. 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 처음 나는 쓰기전용 코드라 하길래, 무슨 말인고 했더니, 코드를 쓰기가 편한데로 쓴 코드를 쓰기 전용(write-only) 코드라고 한다. 즉 이런 코드... vector v; int x, y; ... v.erase( remove_if( find_if( v.rbegin(), v.rend(), bind2nd( greater_equal(), y ) ).base(), v.end(), bind2nd( less(), x ) ), v.end() ); 쓰기 전용 코드..
항목 46 : 알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다. 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이유는 3가지로 요약된다. 첫째, 함수의 포인터를 넘길때, 인라인화가 되지 않아 컴파일러 최적화가 되지 않는다. 이것은 CPU가 함수를 호출할 때의 원리를 알고 있어야 이해가 쉽게 될것이다. 인라인화와 그냥 함수 포인터를 이용한 호출은 CPU 명령 횟수의 차이를 보인다. 즉 함수 포인터로 함수 호출하는것은 그 만큼 많은 명령을 더 내려야 한다는 것이다. 둘째, 일반 함수를 이용할 경우 컴파일이 되지 않을 수 있다. STL 플랫폼이 const 멤버 함수(s..
항목 45 : count, find, binary_search, lower_bound, upper_bound, 그리고 equal_range 를 제대로 파악해 두자. 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 왜냐하면, 각각의 역활이 다르기 때문에 구현이 다르다. 이 구현이 다르다는 의미는 속도, 부하가 다르다는 의미이다. 그러므로 제대로 파악하자는 취지에서 쓰여진 항목이다. 정리하자면 http://turboc.borlandforum.com/impboard/impboard.dll?action=read&db=cpp_tip&no=25 질문 (해야 할 작업들) 사용할 알고리듬 사용할 멤버 함수 정렬되지 않은 범위 정렬된 범위 set 또는 map multiset 또는..
항목 44 : 같은 이름을 가진 것이 있다면 일반 알고리즘 함수보다 멤버 함수가 더 낫다. 내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 항목 43에서 말했던 STL 제작자보다 더 좋게 만들 수 없다면 알고리즘은 더 좋은 성능을 보여줄것이라는 이야기와 일맥상통 한다. 왜냐하면 STL 제작자 중 컨테이너 제작자 보다야 컨테이너에 대해서 더 자세히 알겠는가? 이름 짓기관례상 알고리즘과 동일한 기능을 하는 멤버 함수는 동일한 이름을 갖는다. 그런데 굳이 동일한 기능을 하는데, 멤버 함수로 만들 필요가 있을까? .. 더 뛰어난 성능을 보이기 때문에, 멤버 함수로 만들어 놓은 것이다. map.fin..