我有一个看起来像这样的类:
template<typename comparer>
class MyClass {
std::map<std::uint32_t, MyElementType, comparer> entries;
public:
void doSomething(std::uint32_t key, const MyElementType& el) {
...
}
};
我想在 MyClass 以与特定比较器无关的方式专门针对不同的比较器之后使用它。最优雅的方法是什么?
最佳答案
使用 std::function
作为比较器。
using MyMap = std::map<std::uint32_t, int, std::function<bool(std::uint32_t, std::uint32_t)>>;
MyMap entries1{[](std::uint32_t a, std::uint32_t b){ return a < b; }};
MyMap entries2{[](std::uint32_t a, std::uint32_t b){ return a > b; }};
关于c++ - 在 C++ 中隐藏不同的 std::map 比较参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571700/