Пожалуйста, рассмотрите класс A
и объект функции A_less
, A_less
сравнивает два A
указатели, в зависимости от результата A::getvalue()
,
class A {
int getvalue(const string &Parameter);
};
struct A_less : public binary_function<A *, A *, bool> {
A_less(const string &P) : Parameter(P) { }
bool operator()(const A *lhs, const A *rhs) const {
return A->getvalue(Parameter) < rhs->getvalue(Parameter);
}
string Parameter;
}
Как мне объявить / создать отсортированные контейнеры (sets, priority_queues, …), из A
указатели, отсортированные по A_less
в зависимости от конкретных (во время выполнения) значений Parameter
?
Как это:
std::string p = ...;
std::set<A,A_less> m(A_less(p));
Вы должны указать параметр шаблона Compare
(который является вторым для set
). При построении карты вам нужно передать объект функции сравнения в конструктор map
,
Других решений пока нет …