C++ object serialization 란 무엇인가? 국내에 번역된 말로는 "객체 직렬화" 라고 하는데, 우리나라말로 좀 더 풀어 보면, 객체의 메모리를 연속적인 바이트로 만들고, 만들어진 연속적인 바이트를 원래의 객체로 복원하는 작업을 말한다. 그러므로 C++ object serialize 라고 한다면, 위에서 말한 작업을 하라는 것이다. 어디에 쓰이는가? 이러한 객체 직렬화는 메모리에 있는 데이터를 스트림으로 보낼 때 사용 한다. 스트림을 이용하면 객체(객체를 아니여도 ... )를 파일에/로/ 출력/입력 할 수 있으며, 네트워크에서 송수신 할 수 있으므로, 보통, 객체를 파일로 저장해서 읽으려고 할 때, 네트워크로 보내고 받을 때 이다. 개인적 사견으로는 암호화를 할 때, 사용 될 수도 있을것 ..
분류 전체보기 검색 결과
개요 이번 문제는 그래픽 편집기를 만들어 보는 것이다. 너무 다행이게도, 텍스트로 9개의 기능만 구현하면 된다. 이것을 구현하는 것은 커맨드 라인형 인터페이스, 그래픽 편집 기능을 생각해보라는 데에 목적을 두고 있는 것 같다. 본문 그래픽 편집기를 만드는 규칙은 이러하다. 1. 입력은 한 줄에 하나씩의 편집기 명령으로 구성된다. 2. 각 명령은 줄 맨 앞에 있는 대문자 한개로 표현된다. 3. 매개변수가 필요한 경우에는 그 명령과 같은 줄에 스페이스로 분리되어 입력 한다. 4. 픽셀은 1 ~ M 열과, 1 ~ N 행 으로 표현된다. 5. 책에선 유효 범위를 250 픽셀 안쪽으로 정하지만 난 무시하겠다.(옆집 강아지의 이름을 기억해 주지 않아!) 6. 좌측 상단을 1, 1 으로 정하고, 이곳을 원점으로 정한..
Erase를 구현했을 때와 별 차이가 없다. 지우지 말고 자료형만 바꾸면 된다. 이건 바로 코딩으로 만들어도 될 듯하여, 제목만 보고 코딩을 했다. 다음 소스코드를 보자 template struct Replace; template struct Replace { typedef NullType Result; }; template struct Replace { typedef typelist Result; }; template struct Replace { typedef typelist Result; }; 생각 할 것도 없었기 때문에 굳이 정리는 하지 않고, ReplaceAll 을 한번 만들어 보기 바란다. ReplaceAll 소스코드 template struct ReplaceAll; template struc..
왜 중복 자료형 삭제가 필요한 걸까? 이것도 3.9, 3.8, 3.7과 마찬가지로 기존의 자료형에서 약간의 변형만 주어 새로운 자료형을 손쉽게 만들기 위함에 있다. 어떻게 하면 typelist의 중복 자료형을 삭제 할 수 있을까? 우선 생각해 볼 것이 있다. 1. 중복된 자료형인지 어떻게 판별 할 수 있을까? typelist에서 첫번째 타입은 온전히 확인 가능하다. 그러므로 이 첫번째 타입 즉, Head 타입이 Tail타입에 있는지 체크하면 될 것이다. 2. 중복되었다면 어떻게 지울 수 있을까? 3.9에서 특정 타입을 지우는 방법을 배웠다. Tail 에서 Head를 지우고 이 결과 타입을 다시 중복제거 알고리즘을 돌리면 될 것이다. 3. 중복되지 않았을 경우에는 어떻게 처리 할 수 있을까? Erase함수..
어떻게 하면 특정 자료형을 지울 수 있을까? 가장 작은 알고리즘을 생각한다면, 다음고 같을 것이다. 1. 지울 자료형이 있는지 찾는다. 2. 있다면, 지운다. 3. 없다면, 그대로 둔다. 여기서 "1. 지울 자료형이 있는지 찾는다"에서 다음 질문이 이어 질 수 있다. 어떻게 찾을 수 있는가? 찾는 방법은 찾고자 하는 타입과 비교 대상이 같은지 비교 하는 것이다. 다시 다음 질문으로 이어 질 수 있겠다. 비교 대상은 무엇이며, 어떻게 비교 할 수 있는가? 비교 대상은 typelist 구조상 첫번째 Head 타입일 수밖에 없다. Tail 타입은 typelist이거나 NullType 인데, 이것들은 비교 할 수가 없다. Head 타입을 비교 하는 방법은, 템플릿 부분 특수화 밖에 없다. 여기서 예외가 하나 발..
만약 typelist에 자료형을 추가할 수 있다면 얼마나 좋을까? 왜 좋은지 모르겠다구? 음.. 내가 설명을 정리를 안한게 있나보다. 처음부터 다시 간다면 6개의 타입을 갖는 typelist를 정의 하기 위해선 매크로를 돌려서 typedef TYPELIST_6(float, int, double, unsigned long, long long, float) typelist6; 로 만들어야 할 것이다. 만들고 사용하다 보니, 동일한 타입에 int만을 추가하고 싶다. 자.. 그러면 어떻게 할까? typedef TYPELIST_7(float, int, double, unsigned long, long long, float, int) typelist7; 자 어떤가? .. 아 귀찮아서 못써먹겠다고? 그렇다. 그래서 ..
최근댓글