더북(TheBook)

이 코드는 먼저 벡터의 길이를 기록하고, 그다음 벡터에 들어 있는 모든 데이터를 기록하는 식으로 직렬화를 진행한다. Write()에서 먼저 벡터의 길이부터 기록하는 것에 유의하자. 그래야만 대칭되는 Read()에서 나중에 읽어 들일 때 적절한 길이의 벡터를 먼저 할당해 두고 내용물을 읽어 들일 수 있기 때문이다. 이 벡터는 정수, 즉 원시 자료형을 담고 있으므로 memcpy() 한 번으로 모두 직렬화할 수 있다. 더 복잡한 자료형을 지원하려면 std::vectorWrite()를 템플릿으로 작성해 각 원소를 하나씩 직렬화하게 구현해야 한다.

template<typename T>
void Write(const std::vector<T>& inVector)
{
    size_t elementCount = inVector.size();
    Write(elementCount);
    for (const T& element : inVector)
    {
        Write(element);
    }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.