{ 메모리에 의존한 표현 방식은 플랫폼에 따라서 달라지기 때문에, 너무 연연해 하지 말고, 타입에 의존하여 코드를 짜는게 좋다는 이야기이다. 음.. 그렇다고 해도 타입에 너무 의존해도 큰 코 다치더라. 리눅스와 윈도우에서 돌아가는 서버를 만들고자 할 때 윈도우용 타입을 사용하면 리눅스에서 컴파일이 안되기 때문이다. 이럴 경우에는 고유한 C++ 타입만 사용하면, 문제는 없다. 그래도 여전히 문제가 있는데, 64비트와 32비트와 32비트일 때 이다. 자세한 것은 링크로 대체한다. 검색어 : 32bit 64bit 변수 주의 }
책 정리/C++ Coding Standards : C++ 코딩의 정석 검색 결과
{ 타입을 변환해야지만 가능하다면, 애초에 다형성을 활용해서 짜는게 더 좋지 않겠냐는 이야기이다. 이런 이야기는 무척 많이 들어온 터러 간략하게 말해도 정리가 된다. 그리고 타입의 변환보다 다형성이 코드를 보다 독립적으로 구성 시킬 수 있기 때문에, 타입변환 대신 다형성을 사용하는게 더 편하다. 대표적인 예로, 도형 클래스가 있고, 각 도형 클래스는 자신을 그린다고 하자. 그리고 각 도형을 인자로 받아, 아이디 별로 분기 시켜서 그린다고 했을 때 다음과 같은 코드가 나온다. #include enum eFigure { RECTANGLE, TRIANGLE, CIRCLE }; class CRECTANGLE { public: void Draw() { // 사각형을 그린다. } }; class CTRIANGLE ..
{ 올바른 함수객체를 만들고자 할 때, 일반론으로 만들면 된다. 이때 추가적으로 알아두면 좋은게 있는데, 표준 알고리즘을 사용하다 보면, 특정한 typedef를 요구하는 것들이 있다. 이런 것들을 염려했을 때 unary_function, binary_function 를 고려해 보는게 좋을 것이다. 구글에게 물어보면 자세히 알려 주므로 생략~ 아 생각해 보니까 나는 이것을 잊어 먹었다. 왜냐하면 bind 만 사용하면 손 쉽게 해결 하기 때문이다. }
{ 알고 있겠지만, 함수 객체는 더 빠르게 작동 할 건덕지가 있다. 물론 bind 류 들은 빠른 성능과는 거리가 멀지만 말이다. 테스트를 하면 금방 알수 있으니, 직접 코드를 짜 보는게 좋다. 관련링크 http://ikpil.com/701 }
{ 술어 : predicate 란 true/false 로 리턴하는 함수 객체를 말한다. 왜 순수한 함수로 만들어야 하는가? 알고리즘 속으로 들어간 함수 객체는 그 값이 복사에 의해서 구현부 쪽으로 전달 되어 진다. 이 과정에서 함수 객체의 상태의 현재 상태가 유지되며 전달되기가 어렵기 때문에, 아예 순수하게 만들어서, 사용하는게 더 편하다는 의미에서 순수한 함수로 만들어야 한다는 것이다. 몇가지 술어 함수 만드는 일반론이 있는데, operator() 를 const 로 만들고, 가상 함수가 없도록 하고, 내부 데이터를 쓰지 않는다 라는 일반론이다. 이 이야기는 pimple 이디엄과 맞물리면서 꽤 좋게 생각된다. ^^ 반드시 상태를 가지는 함수 객체여야 한다면, 내부 데이터가 포인터로 유지되게 하면 된다. ..
{ STL 에 있는 정렬 알고리즘으로는 sort 만 써봤다. 물론 전체 sort 이기 때문에 특화된 sort 보다는 느리다. 하지만 실제로 특화 정렬을 할 때가 별로 없었다. 물론 이건 개인적인 경우이므로 이 말은 무시하는게 옳다. 만약, 특별한 경우에 sort 를 해야 한다면, STL 에서 제공하는 정렬 알고리즘을 알고 있으면 도움이 될 것이다. 또는 자신이 직접 알고리즘을 작성해도 될 것이다. 하지만 주제가 STL 이므로, 생략한다. STL 정렬 알고리즘으로는 partition, stable_partition, nth_element, partial_sort, sort, stable_sort 가 있다. 구글에게 물어 보면 자세히 나오니 한번 물어 보는게 좋을 것이라고 생각 한다. }
최근댓글