1부에선 기본적인 개념을 정리했습니다. 2부에서는 BOOST_FOREACH를 보다 확장해서 사용하거나, 최적화 해서 사용 하는 방법에 대해서 알아 봅니다. BOOST_FOREACH 의 확장 BOOST_FOREACH 를 사용하다보면, 내가 정의한 새로운 타입의 집합체도 BOOST_FOREACH를 이용하여 훑고 싶을 때가 있습니다. 어떻게 하면 사용 할 수 있을까요? 여기서 말하는 확장은 바로 "새로운 타입을 BOOST_FOREACH"로 돌리기 위한 확장 입니다. 확장을 하는 방법으로 다음 코드를 보세요. 여기선 예로 std::string 이라고 정하는데, 원리는 똑같습니다. #include #include #include // for BOOST_FOREACH namespace my { // 시작과 끝을 나..
2009/10 검색 결과
BOOST_FOREACH 의 경우 boost 1.34.0 부터 정식으로 들어간 라이브러리 입니다. 본 문서는 boost 1.40.0 기준으로 작성 되었습니다. BOOST_FOREACH 에 대한 메뉴얼은 다음의 링크에서 확인 할 수 있습니다. http://www.boost.org/doc/libs/1_40_0/doc/html/foreach.html BOOST_FOREACH 란? C++ 에서 반복자로 정해진 구역을 기존의 방식보다 편하게 훑기 위해서 만들어진 라이브러리 입니다. 기존의 방식으로는 for 문, std::for_each 가 대표적인데, 사용방법이 귀찮거나, 소스관리가 어려운 단점이 있었기에, 사용 할 때 많은 신경을 써야 했습니다. 기존의 방법들의 단점을 한번 봐 봅시다. #include // f..
PC/UVa ID : 110107/10196 개요 체스판에서 킹이 상대방의 수에 의해서 잡힐 수 있다면, 체크 상태를 알려 주는 일을 하는 것이다. 체스를 할 줄 모르면 뭐, 체스 룰부터 아는게 좋다. 나같은 경우 장기 룰을 알고 있기 때문에 장기와 빗대서 말하겠다. 폰(p) : 한번에 앞으로 한칸 씩 앞으로 갈 수 있으나, 상대 패를 먹을 때는 앞쪽 대각선 1칸 범위에서만 막을 수 있다. 마지막 폰은 뒤로 갈 수 없으며, 뒤로 가서 먹을 수도 없다. 나이트(n) : 장기의 馬 같은 움직임을 가진 녀석인데, 주변 장애물에 상관없이 공격 할 수 있다. 비숍(b) : 대각선 방향으로 거리 제약 없이 이동하면서 상대 패를 먹을 수 있다. 록(r) : 장기의 車 와 같은 움직임을 가진 녀석이다. 퀸(q) : 비..
이번 boost 포스팅은 boost의 1.38.0 버전 부터 추가가 된 scope exit 입니다. 라이브러리 이름에서 오는 포스에서 알 수 있듯이, "유효 범위"와 관련 있는 라이브러리 입니다. http://www.boost.org/doc/libs/1_40_0/libs/scope_exit/doc/html/index.html 에서 확인 가능합니다만, 시간이 지나서 링크가 깨질수 있으니. boost.org 에 직접 들어 가봐서 보는게 좋을듯 싶네요. scope exit 란 무엇인가? "{ }" 를 벗어 날 경우, { } 안에 있는 변수들의 경우, 스택 되감기에 의하여, 지워 집니다. 이때 C++에서의 객체라면, 소멸자를 호출해주는데, 문제는 동적메모리 할당된 개체의 경우라든지, 뮤텍스라든지, 파일 핸들, ..
PC/UVa ID : 110106/10033 개요 어떤 컴퓨터에 열 개의 레지스터와 1,000워드 분량의 램이 있다. 각 레지스터 또는 램 위치에는 0 이상 999이하의 세 자리 정수가 저장된다. 명령어는 세자리 정수로 인코딩되며 램에 저장된다. 인코딩은 다음과 같다. 100 : 종료 2dn : d 레지스터를 n으로 설정(0 이상 9 이하) 3dn : d 레지스터를 n 더함 4dn : d 레지스터를 n 곱함 5ds : d 레지스터를 s 레지스터의 값으로 설정 6ds : s 레지스터의 값을 d 레지스터에 더함 7ds : d 레지스터에 s 레지스터의 값을 곱함 8da : d 레지스터를 a 레지스터에 저장된 주소의 램에 들어 있는 값으로 설정 9sa : a 레지스터에 저장된 주소의 램에 s 레지스터의 값을 대..
C++ object serialization 란 무엇인가? 국내에 번역된 말로는 "객체 직렬화" 라고 하는데, 우리나라말로 좀 더 풀어 보면, 객체의 메모리를 연속적인 바이트로 만들고, 만들어진 연속적인 바이트를 원래의 객체로 복원하는 작업을 말한다. 그러므로 C++ object serialize 라고 한다면, 위에서 말한 작업을 하라는 것이다. 어디에 쓰이는가? 이러한 객체 직렬화는 메모리에 있는 데이터를 스트림으로 보낼 때 사용 한다. 스트림을 이용하면 객체(객체를 아니여도 ... )를 파일에/로/ 출력/입력 할 수 있으며, 네트워크에서 송수신 할 수 있으므로, 보통, 객체를 파일로 저장해서 읽으려고 할 때, 네트워크로 보내고 받을 때 이다. 개인적 사견으로는 암호화를 할 때, 사용 될 수도 있을것 ..
최근댓글