If you used an std::vector, you couldn't have a bottleneck, for the simple reason that the std::vector is an array.
There might be systems on which this is true, but not on the c++ libraries on my mac. When I was trying to figure out what was going wrong with my vector-based program, I got to look at a lot of vectors from within gdb, and they have a neat bucket system going on that I'm sure is very fancy and clever, but let me tell you, it is not just an array, and good luck figuring out from the data alone what is stored in it unless you already know an awful lot about the underlying implementation...
If you used an std::vector, you couldn't have a bottleneck, for the simple reason that the std::vector is an array.
There might be systems on which this is true, but not on the c++ libraries on my mac. When I was trying to figure out what was going wrong with my vector-based program, I got to look at a lot of vectors from within gdb, and they have a neat bucket system going on that I'm sure is very fancy and clever, but let me tell you, it is not just an array, and good luck figuring out from the data alone what is stored in it unless you already know an awful lot about the underlying implementation...
The storage for a std::vector is required by the C++ standard to be an array. See http://www.parashift.com/c++-faq-lite/containers.html#faq-34.3
In fact, it was Inspector Gregory with whom Holmes has this dialogue.
Check out Silver Blaze at http://www.gutenberg.org/etext/834
I've used gnomevfs. They sound similar. How is it different from KIOslaves?