A cache system for trees, if not impossible, would be insanely difficult and also too memory-intensive. I highly doubt it would be any real use.
What'd be more interesting is a data structure that would hold the same data as sSetBlockList / sSetBlockVector, but implement better memory management. Instead of creating a sSetBlock object on the stack and copying it to the sSetBlockVector in a push_back(), it should directly take the arguments and set the internal sSetBlock implementation, without the temporary stack object. The question is, whether the optimizing compiler doesn't do that already, and if not, whether it would have as high an impact as I think it would.
What'd be more interesting is a data structure that would hold the same data as sSetBlockList / sSetBlockVector, but implement better memory management. Instead of creating a sSetBlock object on the stack and copying it to the sSetBlockVector in a push_back(), it should directly take the arguments and set the internal sSetBlock implementation, without the temporary stack object. The question is, whether the optimizing compiler doesn't do that already, and if not, whether it would have as high an impact as I think it would.