использовать значение времени выполнения в создании экземпляра шаблона

Пожалуйста, рассмотрите класс 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?

2

Решение

Как это:

std::string p = ...;
std::set<A,A_less> m(A_less(p));

Вы должны указать параметр шаблона Compare (который является вторым для set). При построении карты вам нужно передать объект функции сравнения в конструктор map,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]