c++ - 在模板实例化中使用运行时值

标签 c++ templates stl containers sorting

请考虑类A和函数对象A_lessA_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;
}

我如何声明/创建A指针的排序容器(集合,priority_queues,...),根据特定的(运行-)按A_less排序时间)参数的值?

最佳答案

像这样:

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

您必须指定模板参数Compare(这是set 的第二个参数)。构造map时,需要将比较函数对象交给map的构造函数。

关于c++ - 在模板实例化中使用运行时值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061733/

相关文章:

c++ - 静态函数接收到错误的参数

c++ - 将元组类型转换为另一个元组类型

c++ - 在 C++ 中调用 protected 虚方法

c++ - 部分专注于错误类型的非类型模板参数

c++ - 确定类型是否具有特定的成员函数签名

c++ - std::map<k,v> 的集合必须有多大才能超过排序的 std::vector<std::pair<k,v>>?

c++ - .size() 字符串操作不读取字符的实际长度/大小 c++

c++ - 模板和循环依赖

c++ - 我如何让这两个模板类协同工作? (C++ 中的属性)

C++ 将一个 vector append 到另一个 vector