Мне нужно как-то использовать метод Compare из CTimeStamp
при вставке в эту мультикарту
Начиная с std::multimap
документации , все, что вам нужно, это либо
укажите специализацию для std::less<CTimeStamp>
namespace std {
bool less<CTimeStamp>(const CTimeStamp& a, const CTimeStamp& b) {
return a.compare(b) < 0;
}
}
или
предоставить пользовательский компаратор в конструкторе:
CMailLog() :
logs([](const CTimeStamp& a, const CTimeStamp& b) { return a.compare(b) < 0; })
{}
Я использовал лямбда-выражение в своем последнем примере для конструктора, так как считаю, что это самая короткая и наиболее понятная форма.
На самом деле любой вызываемый с подписью bool (const CTimeStamp&,const CTimeStamp&)
будет соответствовать.
Вы также можете написать простую глобальную функцию
bool foo(const CTimeStamp& a,const CTimeStamp& b) {
return a.compare(b) < 0;
}
или соответствующий вызываемый тип
struct foo {
bool operator()(const CTimeStamp& a,const CTimeStamp& b) {
return a.compare(b) < 0;
}
};
и передайте это в
multimap<CTimeStamp, CMail> logs;
в списке инициализатора конструктора:
CMailLog() : logs(foo) {}
Версия вызываемой структуры
CMailLog() : logs(foo()) {}