【发布时间】:2019-03-08 09:33:54
【问题描述】:
我正在阅读,我对下面的运算符重载部分感到困惑, 这里我们如何在不定义比较器的情况下进行排序。
如何在不定义任何比较器的情况下对两个结构进行排序,编译器如何知道它有两个排序的依据是什么?
当我们要使用e1的时候
假设 STL 排序的默认比较器使用类似这样的东西 e1bool operator
struct Edge {
int u, v, weight;
bool operator<(Edge const& other) {
return weight < other.weight;
}
};
vector<Edge> edges;
sort(edges.begin(), edges.end());
【问题讨论】:
-
这个真的不清楚你知道吗?请在关闭之前edit您的问题。请务必实际提出问题。另外,请阅读How to Ask。
-
这个问题还不清楚。 “我们如何在不定义比较器的情况下进行排序。”但你确实定义了一个比较器。正如您正确假设的那样,
sort默认使用operator<。它读起来就像你回答自己的问题 -
您是在问
std::sort的工作原理吗?