여기서는 우선 길이부터 기록한 다음 vector의 각 원소를 하나씩 임베딩하며 기록해 나간다. 이렇게 하면 벡터의 벡터, 또는 벡터를 포함한 클래스의 벡터 등 복잡한 형태도 지원할 수 있다. 마찬가지로, 직렬화된 것을 복원하려면 다음과 같이 Read 함수를 구현한다.
template<typename T> void Read(std::vector<T>& outVector) { size_t elementCount; Read(elementCount); outVector.resize(elementCount); for (T& element : outVector) { Read(element); } }
특수화된 Read()와 Write()를 더 추가하면 더욱 다양한 형태의 컨테이너, 또는 포인터로 참조된 데이터를 지원할 수 있다. 단 이 같은 방식은 원조 객체에 전적으로 포함되는, 즉 다른 객체와 공유되지 않는 데이터에 한해서만 적용할 수 있는 직렬화 기법이다. 데이터가 다른 객체와 공유되거나 포인터로 참조된다면 아래에 다룰 링킹이라는 더 복잡한 기법을 사용해야 한다.