일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- more effective c++
- universal reference
- effective modern c++
- 예외
- 반복자
- reference
- implicit conversion
- Effective c++
- effective stl
- 티스토리챌린지
- 오블완
- 언리얼
- lua
- 암시적 변환
- 스마트 포인터
- 보편 참조
- Smart Pointer
- 상속
- operator new
- exception
- 게임
- 참조자
- virtual function
- resource management class
- iterator
- UE4
- 영화
- c++
- std::async
- 영화 리뷰
- Today
- Total
목록전체 글 (241)
스토리텔링 개발자
항목 2. auto의 형식 연역 규칙을 숙지하라 auto와 template의 타입 추론한 가지 기이한 예외를 제외하면, auto 타입 추론이 곧 템플릿 타입 추론이다.// 템플릿 타입 추론// expr과 ParamType의 타입을 통해 T를 추론한다.templatevoid f(ParamType param);f(expr); // 함수 실행// auto 타입 추론// auto : T와 동일한 역할// 변수의 타입 지정자(type specifier) : ParamType과 동일한 역할// 각각 아래의 주석 코드의 템플릿 타입 추론과 동일하다.auto x = 27; // 타입 지정자 : auto// template// void func_for_x(T param);// func_for_x(27);const a..
항목 1. 템플릿 형식 연역 규칙을 숙지하라 auto의 타입 추론모던 C++의 강력한 기능 중 하나인 auto는 템플릿 타입 추론을 기반으로 작동한다.즉, C++98에서 템플릿 타입 추론에 만족했다면, auto 역시 만족할 것이다.하지만, auto는 템플릿에 비해 덜 직관적일 때가 왕왕 있다.그러므로 우선 템플릿 타입 추론 규직을 잘 짚어볼 필요가 있다. 템플릿의 타입 추론templatevoid f(ParamType param);f(expr); // 어떤 표현식으로 f를 호출컴파일러는 expr(표현식)을 이용해서 두 가지 타입을 추론한다.T 타입ParamType 타입위의 두 타입은 같을 수도 있지만, 보통은 다르다. 아래의 예제로 명확해진다.templatevoid f(const T& param);..
항목 50. STL 관련 웹 사이트와 친구하자 해당 책이 쓰여질 때 가장 많이 찾던 사이트들(2001년)SGI STL 사이트실리콘 그래픽스가 파산하며, 현재는 사라졌다.STLporthttp://www.stlport.org/ SGI STL을 기반으로 멀티플랫폼을 타겟으로 개발되었다.Boosthttps://www.boost.org/표준으로 추가될 여지가 큰 기능들을 미리 활용해 볼 수 있다.

상상하는 걸 참 쉽게 생각했던 시절이 있었다. 그러니까, 지금으로부터 20년은 넘게 지난 일이긴 하지만, 아무튼 그런 시절이 있었다. 상상만큼 쉬운 건 없다고까지 생각했으니까, 참 어렸고 어리석었다. 어린것이 어리석다는 것과 동의어라는 뜻은 아니지만, 나로 한정 지어 생각하면 동일하다고 봐도 무방할 듯하다. 뭐, 그 시절엔 모든 것이 쉬워 보였으니까. 내 몸이니 당연히 모든 걸 컨트롤할 수 있다고 생각했던 시기기도 하다. 늙음과 노쇠함 같은 건 나와 전혀 연관 지어 생각할 수 없었는데, 지금 돌이켜보면 그 연결지음이야말로 상상의 영역이었다. 그 정도의 연결도 짓지 못하면서 상상력을 깔보았던 것이다! 영화로 돌아가보자. 영화는 끊임없이 무시되는 부분들을 강조한다. 등장인물들은 전혀 거리낌 없이 무시해 ..
항목 49. STL에 관련된 컴파일러 진단 메시지를 해석하는 능력을 가지자 컴파일러 에러 예시 1vector v(10); // 크기 10의 벡터를 하나 만든다. 성공.string s(10); // 크기 10인 string 객체를 만든다? 실패비주얼 c++에서 아래와 같은 에러가 발생한다.example.cpp(20): error C2664:'__thiscall std::basic_string,class std::allocator>::std::basic_string,classstd::allocator >(const class std::allocator &)': cannot convertparameter 1 from 'const int' to 'const class std::allocator &' Reas..
항목 48. 용도에 맞는 헤더를 항상 #include하자 표준 헤더 인클루드 관계플랫폼 별로 #include가 차이가 나는 상황이 생긴다C++ 표준안이 표준 헤더 사이의 인클루드 관계를 명확하게 정해두지 않았기 때문이다. 표준 STL 헤더 종류 정리거의 모든 컨테이너들은 같은 이름의 헤더에 정의되어 있다.벡터는 , 리스트는 ..에는 네 개를 제외한 모든 알고리즘이 선언되어 있다.에 나머지 넷이 선언되어 있다.accumulate(항목 37 참조)inner_productadjacent_difference,partial_sum에는 istream_iterator와 istreambuf_iterator(항목 29 참조)를 포함한 특별한 종류의 반복자들이 선언되어 있다.에는 표준 함수자(예컨대 less)와 함..
항목 47. 쓰기 전용(write-only) 코드는 만들지 말자 가독성이 떨어지는 코드의 예벡터에서 x보다 작은 값을 모두 지우되,y보다 크거나 같은 값 중 가장 마지막 것의 앞에 있는 건 지우지 않도록 하는 코드vector v;int x, y;...v.erase(remove_if(find_if(v.rbegin(), v.rend(), bind2nd(greater_equal(), y)).base(), v.end(), bind2nd(less(), x)), v.end()); // 1. v 벡터의 역순으로 순회하면서, y보다 크거나 같은 첫 번째 요소를 찾는다.// 이를 base()를 사용하여 정방향 반..
항목 46. 알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다 추상화(abstraction)와 성능추상화가 높을수록 코드의 효율은 낮아진다.그런데 함수 객체가 함수보다 빠르다니? double의 벡터를 내림차순으로 정렬하기vector v;...// 방법 1sort(v.begin(), v.end(), greater()); // 함수 객체 greater를 사용했다.// 방법 2inline bool doubleGreater(double d1, double d2){ return d1 > d2;}sort(v.begin(), v.end(), doubleGreater); // 함수를 사용했다.방법 1이 거의 확실히 더 빠르다.이유는 인라인화(inlining)이다. 인라인화(inlining)인라인으..