일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 예외
- 비교 함수 객체
- virtual function
- 상속
- 스마트 포인터
- 티스토리챌린지
- exception
- 참조자
- 루아
- c++
- implicit conversion
- 영화 리뷰
- reference
- 언리얼
- 다형성
- lua
- operator new
- 게임
- Smart Pointer
- 반복자
- Vector
- 오블완
- more effective c++
- effective stl
- 메타테이블
- 영화
- resource management class
- 암시적 변환
- UE4
- Effective c++
- Today
- Total
목록비교 함수 객체 (3)
스토리텔링 개발자
항목 42. less는 operator less의 기본 동작아래처럼 기본적으로 무게로 정렬되는 Widget이 있다.class Widget{public: ... size_t weight() const; size_t maxSpeed() const; // 무게로 정렬되는 operator헌데, 최대 속도(maxSpeed)를 가지고 정렬하는 multiset을 만들고 싶다면?multiset의 기본 비교 함수는 less이다.하지만, less은 기본적으로 Widget 객체 두 개에 대해 operator 문제 해결하기(잘못된 예)템플릿 특수화로 less과 operator// 템플릿 특수화로 처리한다.templatestruct std::less{ bool operator()(cons..
항목 21. 연관 컨테이너용 비교 함수는 같은 값에 대해 false를 반환해야 한다 같은 값 처리set > s; // 이 경우 처리 순서를 보면..내부 데이터 구조를 뒤지면서 10B를 삽입할 위치를 찾는다.10B가 10A와 같은지 operator!(10A set은 10A와 10B가 동등하지 않다는 결론을 내린다.즉, 비교 함수가 같은 값에 false를 리턴하면 10을 다시 넣으려고 시도하게 된다.(오류)같은 값에 대해 true를 반환하는 비교함수는 모두 이런 결과를 만든다. 주의 사항operator!를 사용하는 비교 연산자 반전을 조심할 것struct StringPtrGreater{ bool operator()(const string* ps1, const string* ps2) const ..
항목 20. 포인터를 저장하는 연관 컨테이너에 대해서는 적합한 비교(비교 함수 객체) 타입을 정해주자 연관 컨테이너 문제set ssp;ssp.insert(new string("Anteater"));ssp.insert(new string("Wombat"));ssp.insert(new string("Lemur"));ssp.insert(new string("Penguin"));for(set::const_iterator i = ssp.begin() ; i != ssp.end() ; ++i){ cout set에 들어있는 값은 포인터이기에 출력물은 16진수 네 개가 한 줄씩 나올 뿐이다.아래와 같이 한다면?// ssp의 문자열을 cout으로 복사한다. 하지만..copy(ssp.begin(), ssp.end..