gpt4 book ai didi

c++ - std::sort 在第二个元素没有比较器的对上

转载 作者:太空狗 更新时间:2023-10-29 23:49:32 25 4
gpt4 key购买 nike

我想弄清楚为什么会在没有警告/错误的情况下编译以下代码。

这是我在办公室从事的项目中看到的一段代码。 (变量/类名已更改)

vector<pair<time_t, ClassA *> > vec = getVecFromSomewhere();
std::sort(vec.begin(), vec.end());

我检查了 ClassA 的源代码,我没有看到任何比较器被实现。那么只有一对中的第一个元素需要比较器是真的吗?

编辑:ClassA 的所有实例都来自同一个 vector 。

最佳答案

ClassA可能没有 operator< ,但这并不重要,因为您正在存储 ClassA*在你这对,不是ClassA .您可以比较指针,因此您的代码可以正常工作。

ClassA as [10];
as[0] < as[1]; //invalid, compares ClassAs
as < as+1; //valid, compares ClassA*s

请注意,您需要非常小心比较的语义。您真的想要比较这些指针吗?它们指向同一个数组对象吗?否则,一旦比较它们,您就会进入未定义行为的有趣世界。如果是这样,该顺序可能仍然不是您想要的。

关于c++ - std::sort 在第二个元素没有比较器的对上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40127727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com