fewer strings
use indexes
use shared_ptr
use list, hold onto garbage in another list
Seems like, when in doubt, use deque.  ~1ms in profiler now.