cpp

Effective Modern C++ (스콧 마이어스, 2015) 독후감

2 minute read

다시 C++을 만지게 됐다. 책장에 꽂혀 있던 ’Effective Modern C++’ 책을 다시 읽었다. 예전에 읽었던 것 같은데, 새롭고 놀랐다. 나보다 더 깊이 생각한다. 여기까지 설명하겠지 하면서 읽다 보면 예상한 것보다 한 발짝 더 깊이 들어가서 설명한다. 스콧 마이어스 ...

#cpp #tr1 shared_ptr, weak_ptr

1 minute read

STL에는 auto_ptr라는 스마트 포인터가 있지만 할당하면 소멸식 복사(destructive copy)로 자원에 대한 소유권을 넘겨주는 동작을 한다. STL 알고리즘은 값에 의한 복사가 기본 동작이라서 컨테이너에 못 넣는 스마트 포인터가 되겠다. 이게 이슈가 많이 돼서 이름도 ...

#review Google C++ Style Guide

1 minute read

사실 style guide가 나와서 말인데, 나는 조엘이 엄선한 소프트웨어 블로그 베스트 29선에서 본 ’스타일은 언어 요소다 - 켄 아놀드’글을 완전 지지한다. 많은 언어가 무시하는 공백 문자를 언어 요소로 넣자고 주장하는데, 지겨운 스타일 논쟁을 완전 없앨 수 있고 파싱이 쉬워...

#cpp #idioms Nifty Counter

1 minute read

목적은 Construct On First Use와 같다. 즉, global static object, global object 초기화 순서가 명확하지 않아서 발생하는 static initialization order fiasco를 막기 위한 idiom이다.

#64bit 포팅 - 32비트 포인터들이여 안녕

less than 1 minute read

포팅을 위해 64bit로 빌드를 하면 갑자기 담배가 급하게 땡기게 된다. 수백 개의 에러를 보면 “어휴~ 이걸 언제 다 잡지?”라는 생각이 절로 든다. 하지만 다 저마다 독특한 상황에서 발생하는 에러가 아니라 에러는 수백 개라도 공통된 패턴이 있기 마련이다. viva64.com에 ...

#term memoization, 메모이제이션

less than 1 minute read

계산한 값을 메모리에 저장해서 여러 번 같은 값 계산을 피하는 최적화 기법을 메모이제이션(memoization)이라고 한다. 실행 속도와 공간을 바꾸는 가장 기초적인 기법이기도 하다. 실수로 메모리제이션이라고 하기도 하는데 메모이제이션이 정확한 용어이다.

비디오 메모리 구하기 (DirectDraw, WMI)

2 minute read

PerfHUD나 DirectX Caps Viewer로 볼 수 있지만, 비디오 메모리 사용량을 렌더링하는 게 그리 힘든 일이 아니라 보통 이 정도는 렌더링해준다. 그건 좋은데 문제는 DirectX9 인터페이스로는 사용 가능한 전용 비디오 메모리를 알 수 없는 거다. 그래서 보통 Di...

#cpp Pimpl 관용구

2 minute read

컴파일할때 파일 간의 디펜던시를 줄이려고 사용하는 관용구(idiom)이다. public 접근 권한으로 정의된 함수가 변경될 때, 이 파일을 include 하는 녀석들이 다시 컴파일되는 건 당연한데, 다른 녀석들이 못 보는 private 접근 권한의 멤버 함수나 변수가 변경될 때도 ...

#stl istreambuf_iterator, ostreambuf_iterator : 서식화(formatted)하지 않는 입출력

less than 1 minute read

사용자 입력은 서식화된 입력(공백 문자 무시 등)이 필요하지만 파일 입출력에서는 서식화된(formatted) 입력이 필요 없는 경우가 대부분이다. 서식화된 입출력은 쌩 입출력보다 처리를 하는 게 많아서 속도가 느린 게 당연하다. 공백 문자 무시 옵션을 켜도 되지만 이런 서식화 입출...

#stl 상등 관계(equality)와 동등 관계(equivalence)의 차이 파악

2 minute read

두 값이 같은가를 판단하는 두 가지 방법이 존재한다. 첫 번째 방법은 두 값이 같은지를 바로 판단하는 것이고 두 번째 방법은 작지도 않고 크지도 않다는 것을 확인해서 두 값이 같은지를 판단한다. 이 첫 번째 방법은 operator== 로 판단하는데, A == B 이면 두 값이 같다...

#stl VS 2005의 std::string 구현(딩컴웨어 STL)

1 minute read

Effective STL 항목 15에서 string이 여러 가지 방식으로 구현되어 있다는 걸 상기시키고 있다. 구현 방법까지 표준 문서에 정의하지 않았기 때문에 당연한 결과이기도 하다. VS 2005에 포함된 딩컴웨어 STL은 어떻게 구현되었나 궁금해서 찾아봤다.

#stl copy_if 알고리즘 구현

1 minute read

STL 알고리즘 이름의 _if 접미사는 술어 함수(predicate)를 인자로 받는 것을 의미한다. 이 술어 함수를 알고리즘 안에서 호출해서 돌려받은 반환 값에 따라 동작을 수행할지 말지를 결정하게 된다. 예를 들면 count_if()는 술어 함수 호출결과가 true인 원소들의 개...

#stl 정렬 알고리즘(sort, stable_sort, partial_sort, nth_element)

3 minute read

컨테이너 정렬이 필요할 때, sort를 사용하고 순서가 유지돼야 하면 stable_sort를 사용했다. partial_sort와 nth_element는 한 번도 사용해본 적이 없는데, 일부분만 정렬이 필요하거나 몇 번째 원소를 뽑을 때 유용하게 사용할 수 있을 것 같다. 예를 들면...

#stl accumulate - 수치 알고리즘

1 minute read

for_each 알고리즘으로 대체 구현이 가능한 거라 한 번도 사용해보지 않은 알고리즘이다. Effective STL 37번 항목에서 accumulate알고리즘에 대한 언급이 나오는데, 으.. 읽고 보니 좋은 걸 안 쓰고 있었구나.

#term predicate, 술어

1 minute read

predicate 발음듣기 [미] [prédikət] 【문법】 술부, 술어 (cf. SUBJECT) 【컴퓨터】 술어 구글 사전

#visualstudio - _noop 키워드

1 minute read

NOOP 혹은 NOP 로 사용하는데, NO OPerator의 줄임말이다. 말 그대로 아무런 연산을 하지 않는 명령어를 뜻한다. 표준이 아니라 VC++ 키워드라는 게 걸리는데, 다른 컴파일러에서 동작하도록 쉽게 수정할 수 있으니 포팅 걱정은 안 하고 VC++에서 편하게 써도 된다. ...

EASTL - 할당자(allocator)

2 minute read

EASTL - Electronic Arts Standard Template Library은 거대 게임 개발사인 EA가 C++ 표준 라이브러리인 STL을 게임 개발에 맞게 수정한 라이브러리이다.

이펙티브 C++ 3판 (Effective C++, 스콧 마이어스, 2015) 독후감

less than 1 minute read

2판이 있는데, 목차를 살펴보니 새로 추가된 내용이 많아서 샀다. 상당히 많은 부분이 추가 되었고 내용들도 수정되고 추가 되었다. TR1에 대한 소개도 추가되었고 템플릿쪽에 대한 얘기가 늘어났다. 두번째로 보는 C++ 책이라 불리는 책이니 책에 대한 다른 칭찬의 말은 필요도 없을 ...

#quiz 몬티 홀 문제(Monty Hall problem)

2 minute read

Suppose you’re on a game show, and you’re given the choice of threedoors: Behind one door is a car; behind the others, goats. You pick adoor, say No. 1, a...