내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고,
도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필
당연히 용도에 맞는 것을 #include 해야지만 컴파일이 되겠지만, 동일 소스로 여러 종류의 컴파일러에서 돌려보면, 안되는 경우가 있다. 왜냐하면 함수의 작성에 대해서는 표준화가 이루어져있지만, #include 헤더에 관해선 정의되어 있는게 없기 때문에 컴파일러 마음데로 파일 관계를 만들수 있기 때문이다.
조금 더 부지런히 용도에 맞는 헤더파일을 #include 한다면, 이식에 관련된 에러를 조금이라도 줄일수 있다고 한다.
STL에 관련하여, 여러 컴파일러의 헤더파일을 알아보니 몇가지 정리가 나왔다고 한다.
1. 컨테이너의 경우 컨테이너의 이름의 헤더파일을 쓰면 된다(vector 의 경우 #include<vector>
2. 4개의 알고리즘 accumulate, inner_prodeuct, adjacent_difference, partial_sum 은 <nummeric> 헤더에 있고 나머지 모든 알고리즘은 <algorithm>에 있다.
3. 특수한 종류의 iterator 는 <iterator>에 있다.
4. 함수 객체 어댑터와 표준 함수 객체(미리 정의된 함수 객체 클래스)는 <functional>에 정의되어 있다.
개인적인 생각
윈도우 프로그래밍이 경우 대부분 MSVC 를 상당히 많이 쓰고, GNU gcc 나 볼란드 c++ 을 많이 사용하는 것으로 알고 있다. 게임 프로그래밍의 대부분도 MSVC 로 많이 개발하다 보니 .. MSVC 를 사용한다면, 크게 문제 될것은 없으니, 이런게 있다~ 는 식으로 넘어가도 될듯 싶다.
당연히 용도에 맞는 것을 #include 해야지만 컴파일이 되겠지만, 동일 소스로 여러 종류의 컴파일러에서 돌려보면, 안되는 경우가 있다. 왜냐하면 함수의 작성에 대해서는 표준화가 이루어져있지만, #include 헤더에 관해선 정의되어 있는게 없기 때문에 컴파일러 마음데로 파일 관계를 만들수 있기 때문이다.
조금 더 부지런히 용도에 맞는 헤더파일을 #include 한다면, 이식에 관련된 에러를 조금이라도 줄일수 있다고 한다.
STL에 관련하여, 여러 컴파일러의 헤더파일을 알아보니 몇가지 정리가 나왔다고 한다.
1. 컨테이너의 경우 컨테이너의 이름의 헤더파일을 쓰면 된다(vector 의 경우 #include<vector>
2. 4개의 알고리즘 accumulate, inner_prodeuct, adjacent_difference, partial_sum 은 <nummeric> 헤더에 있고 나머지 모든 알고리즘은 <algorithm>에 있다.
3. 특수한 종류의 iterator 는 <iterator>에 있다.
4. 함수 객체 어댑터와 표준 함수 객체(미리 정의된 함수 객체 클래스)는 <functional>에 정의되어 있다.
개인적인 생각
윈도우 프로그래밍이 경우 대부분 MSVC 를 상당히 많이 쓰고, GNU gcc 나 볼란드 c++ 을 많이 사용하는 것으로 알고 있다. 게임 프로그래밍의 대부분도 MSVC 로 많이 개발하다 보니 .. MSVC 를 사용한다면, 크게 문제 될것은 없으니, 이런게 있다~ 는 식으로 넘어가도 될듯 싶다.
'책 정리 > Effective STL' 카테고리의 다른 글
Effective STL 중고책 구입 (0) | 2009.01.19 |
---|---|
항목 50 : STL 관련 웹 싸이트와 친구하자 (0) | 2008.09.07 |
항목 49 : STL에 관련된 컴파일러 진단 메세지를 해석하는 능력을 가지자. (0) | 2008.09.07 |
항목 47 : 쓰기 전용(write-only) 코드는 만들지 말자. (0) | 2008.09.07 |
항목 46 : 알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다. (0) | 2008.09.07 |
항목 45 : count, find, binary_search, lower_bound, upper_bound, 그리고 equal_range 를 제대로 파악해 두자. (0) | 2008.09.07 |
항목 44 : 같은 이름을 가진 것이 있다면 일반 알고리즘 함수보다 멤버 함수가 더 낫다. (0) | 2008.09.07 |
항목 43 : 어설프게 손으로 작성한 루프보다는 알고리즘이 더 낫다. (0) | 2008.09.07 |
항목 42 : less<T>는 operator<의 의미임을 꼭 알아두자. (0) | 2008.09.07 |
항목 41 : ptr_fun, mem_fun, mem_fun_ref의 존재에는 분명한 이유가 있다. (0) | 2008.09.07 |
최근댓글