내가 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 를 사용한다면, 크게 문제 될것은 없으니, 이런게 있다~ 는 식으로 넘어가도 될듯 싶다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기