Скрыть разные std :: map сравнить параметры в C ++ - PullRequest
0 голосов
/ 26 октября 2019

У меня есть класс, который выглядит следующим образом:

template<typename comparer>
class MyClass {
  std::map<std::uint32_t, MyElementType, comparer> entries;
public:
  void doSomething(std::uint32_t key, const MyElementType& el) {
    ...
  }
};

И я хотел бы использовать MyClass после того, как он специализировался на разных компараторах таким образом, который не зависит от конкретного компаратора. Какой самый элегантный способ это сделать?

1 Ответ

4 голосов
/ 26 октября 2019

Используйте 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; }};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...