Implement our own set/map. The only standard library things we use are std::string, std::unique_ptr and std::sort