gpt4 book ai didi

c++ - 为 STL 容器重载 "new"?

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:49 25 4
gpt4 key购买 nike

假设我有一个 std::unorderd_map<U,T>其中 U,T 是具体类型。然后我希望该 map 使用自定义 new运算符仅适用于 std::pair<U,T>这样每次我在 map 中插入内容时,都会使用自定义的新运算符。那可以吗?关于这怎么可能的任何提示?我搜索了重载 new在任何 STL 容器上,但我没有找到很多关于该主题的内容。

最佳答案

忘记重载任何 operator new。这是一个几乎无用的语言功能。内存分配在库中比在核心语言中更好地完成,你真正应该做的是将你自己的自定义分配器传递给你的 map :

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);

关于c++ - 为 STL 容器重载 "new"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com