为stl容器重载"new"?

ben*_*ben 1 c++ overloading

说我有一个std::unorderd_map<U,T>U,T是具体类型.然后,我希望该地图new仅使用自定义运算符,std::pair<U,T>以便每次在地图中插入某些内容时,都会使用自定义新运算符.可以这样做吗?有关如何做到这一点的任何暗示?我new在任何stl容器上搜索重载但我没有找到关于该主题的很多内容.

Ker*_* SB 7

忘了重载任何operator new.这是一种无用的语言功能.内存分配在库中比在核心语言中更好,你应该做的是将你自己的自定义分配器传递给你的地图:

MyCustomAllocator<std::pair<const U, T>> alloc(a, b, c);

std::unordered_map<U, T, std::hash<U>, std::equal<U>,
                   MyCustomAllocator<std::pair<const U, T>>> m(10, alloc);
Run Code Online (Sandbox Code Playgroud)