이 최초 쓴 사람은 맨 밑에 표기 했음 실제로 가져온 곳 : http://blog.empas.com/hs8988/13120225 우리 프로그래머들은 항상 공부해야 합니다. 우리는 지식을 중요하게 여깁니다. 하지만 지식에 대한 지식, 즉 내가 그 지식을 얻은 과정이나 방법 같은 것은 소홀히 여기기 쉽습니다. 따라서 지식의 축적과 공유는 있어도 방법론의 축적과 공유는 매우 드문 편입니다. 저는 평소에 이런 생각에서 학교 후배들을 위해 제 자신의 공부 경험을 짬짬이 글로 옮겨놓았고, 이번 기회에 그 글들을 취합, 정리하게 되었습니다. 그 결실이 바로 이 글입니다. 이 글은 공부하는 방법과 과정에 관한 글입니다. 이 글은 제가 공부한 성공/실패 경험을 기본 토대로 했고, 지난 몇 년간 주변에서 저보다 먼저 공부..
2008/07 검색 결과
항목 21과 같은 맹락으로 이어진다. 이것 또한 연관 컨테이너(Associative Containers)의 연관을 무너뜨리게 한다. map 과 multimap 도 키를 바꿀수는 있을 꺼 같지만, 여기선 const 이기 때문에 변경을 못하도록 되어 있다.(캐스팅 하면 가능하지만...) 그래서 이 두개의 컨테이너는 삭제 후 삽입 방법으로 변경해야 한다. 하지만 set 이나 multiset 은 값 자체가 키(Key)이기 때문에, 바꾸는 일은 피해야 한다는 것이다. 이것도 키를 바꾸기 위해선 "삭제 후 삽입"을 해야만 한다. 곰곰히 생각하면 난 바꾸지 않을테니까, const 로 Key를 설정할꺼야. 라고 해서 std::set 하게 해도 크게 두가지 이유 때문에 무의미하게 된다. 첫째, 사용자 정의 객체를 담을 ..
결론부터 말하는게 더 의미전달이 잘 될것 같아, 시작부터 말한다. "왜냐하면, 연관 컨테이너(Associative Containers)의 연관 자체가 무너지기 때문이다" 바꾸어 말하면, 연관 컨테이너(Associative Containers)로써의 가치가 없어진다는 것이며, 컨테이너의 자료들을 신용할수 없다 는것을 의미한다. 그래서 C++ 표준화 위원회에서 연관 컨테이너(Associative Containers)의 요소를 정렬할때 쓰는 비교함수는 같은 값에 대해서 false를 리턴하도록 규정하였다.(즉, 비교함수가 객체를 비교할때 strict weak ordering 을 정의해야 한다. 관련 주소 http://en.wikipedia.org/wiki/Strict_weak_ordering : 요즘 들어 점점..
public 상속이나 protected 상속, private 상속일 때, 인터페이스(접근 할 범위)가 어떻게 바뀌는지 안다는 전제하에서 이야기를 진행한다. private 상속은 (is-implemented-in-terms-of) 패턴을 뜻한다. 즉, ...는 ...를 써서 구현되었다 라고 할수 있다. 38항목에 자세하게 적어 두었으니 읽어 보면 도움이 될 듯 하다. 자 소스 코드가 있어야 이해가 될듯 하여, 소스코드를 포함한다. #include class Ctest { protected: Ctest( ) : a( 1 ) { std::cout
저번장까지는 설계에 관한 이야기보다는 상속시 유의해야 되는 부분이 강조되었다면, 이번 항목은 .. 설계에 관한 부분이다. 나는 지금까지 private 상속이면 "is-implemented-in-terms-of(...는...를 써서 구현됨)" 이고 클래스 내부에서 객체선언하면 "has-a(...는...를가짐)" 이다 라고 이해했지만, 이것은 잘못된 이해이다. 각각은 추상화된 설계 패턴의 일부분이라는 것이다. 이 패턴 들은 객체 합성으로(.. 이라고 불리지만, 레이어링, 포함 통합 내장 으로도 불린다)으로 만들수 있다는 것이다. 그렇다면 다시 제목을 봐보자.. 항목 38: "has-a(...는...를가짐)" 혹은 "is-implemented-in-terms-of(...는...를 써서 구현됨)"를 모형화 할 ..
2008/07/18 - [IT 전뇌실/Effective STL 초판] - 항목 19 : 상등 관계(equality)와 동등 관계(equivalence)의 차이를 파악하자 에서 상등 관계와 동등관계를 정리해 둔것이 있었다. 연관 컨테이너(Associative Containers)에 값을 넣을 때는 그 연관 컨테이너가 어떤 연관순서로 정렬이 되는지 동등관계의 비교타입을 정의해 두어야 한다. 하지만 포인터를 넣는 연관컨테이너는 어떻게 될까? 이 경우에 포인터의 비교타입을 정해두지 않는 다면, 포인터의 동등(equibelence)관계로 정렬이 되기 때문에 원하는 정렬을 하지 못한다. 실험 코드를 준비 했다, 메모리 누수는 .. 알아서 대처 하도록 #include int main(void) { std::set c..
최근댓글