#include <set>
#include <functional>
class C
{
public:
C(const std::string& address) :
mAddress(address)
{};
virtual const std::string& Address() const
{
return mAddress;
};
private:
std::string mAddress;
};
class SetC :public std::set<C*, std::function<bool(const C*, const C*)>>
{
};
Подскажите где прописать код лямбда функции сравнения, например, такой:
[](const C* pC1, const C* pC2) {return pC1->Address() < pC2->Address(); }
В конструкторе:
using Comp = std::function<bool(const C*, const C*)>;
SetC()
: std::set<C*, Comp>(
Comp([](const C* pC1, const C* pC2) {
return pC1->Address() < pC2->Address();
}))
{}
При этом вообще STL-контейнеры не очень хорошо переносят хранение указателей (кто-то должен отдельно за этими указателями следить; для векторов явственно нарушается locality и т.п.). Плюс виртуальный метод, возвращающий ссылку на строку тоже выглядит таинственно и необычно.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости