Ну в данном случае это не рассматривается, но я думаю человеку который не использует stl и собирается писать vfs будет несложно заменить vector на что-то свое
писал свое когда то. у меня можно было прозрачно подключать т.н. namespaces (втыкались в дерево по указанному пути), которые могли быть архивами, реальными папками, экзотическими провайдерами данных (через TCP/IP гонял файлы с сервера), и т.п. сделано
угу, одна из самых интересных задач, пока я был программером. у меня там еще дерево namespaces было сделано плоским списком. к примеру, был namespace "/media/textures". из кода шел запрос Vfs.GetStream("/media/textures/bla/bla/bla/texture1.jpg". Vfs доставала провайдера, зарегестрированного на путь "/media/textures/" и передавало ему запрос на поиск «bla/bla/bla/texture1.jpg». т.е. там обхода дерева не было. довольно стройная система получилась =)
Написание виртуальной файловой системы на c++