본문 바로가기

컬렉션

자체 데이터 컬렉션 가끔씩, 표준 라이브러리에서 기본적인 데이터 컬렉션을 제공함에도 불구하고 각각의 라이브러리가 자체적으로 그런 컬렉션을 제공하는 것이 의아스러울 때가 있었다. 정적으로 링크한다고 하더라도 당시로서는 작은 크기(기껏해야 몇 백 KB?)라고 생각했기 때문이었다. 그렇지만, 코드의 크기와 속도에 신경쓰기 시작하면서, 특히 라이브러리를 만드는데 있어서 표준 라이브러리의 컬렉션을 사용하는 것은 심각한 두통거리가 되었다. 몇 백 KB가 엄청나게 큰 크기라는 것을 깨닫기 시작한 것이다. 그러면서, 각각의 라이브러리에서 벡터, 리스트, 맵과 같은 컬렉션을 자체적으로 제공하는게 이해되었다. 표준 라이브러리에서 호환성 좋고 많은 기능을 제공한다고 하더라도 추가적인 그 크기는 무시할 수 없는 요소이기 때문이었다. (그러면서 .. 더보기
일반화된 데이터 컬렉션 일반화된 데이터 컬렉션을 만들 수는 없을까? 예를 들어, 프로세스 사이에서 어떤 데이터를 공유해야 하는데, 데이터가 하나가 아니라 여러개 묶음이라 해보자. 그렇다면, IPC를 사용해서 일일이 이 데이터를 옮겨야 하는데, 이것은 번거로운 일이다. 그래서 PushInt, GetInt, MakeField..와 같은 메서드를 가진 컬렉션을 만들게된다. 하지만, 이런 방법은 타입 안전성을 가질 수 있는 반면, 이미 서로간에 알려진 타입이어야 한다는 문제가 있다. 즉, 보통의 경우에는 다음과 같이 된다는 이야기인데.. Collection col; col.PushInt(id, 1); col.GetInt(id); 이런 방법 대신에 템플릿을 이용해서 다음과 같이 할 수 없을까? Colleciton col; col.Pus.. 더보기