gpt4 book ai didi

c++ - std::set 与用户定义的类型,如何确保没有重复

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:57 26 4
gpt4 key购买 nike

所以我有一个 std::set 需要保持特定的顺序,并且不允许重复用户定义的(由我)类型。现在我可以通过在我的类型中重载“<”运算符来使订单正常工作。但是,该集合没有适本地检测重复项,老实说,我不完全确定它在内部是如何做到这一点的。我已经重载了“==”运算符,但不知何故我不确定这是集合实际使用的是什么?那么问题来了,当你加值的时候set是怎么判断重复的呢?相关代码如下:

用户自定义类型:

//! An element used in the route calculation.
struct RouteElem {
int shortestToHere; // Shortest distance from the start.
int heuristic; // The heuristic estimate to the goal.
Coordinate position;
bool operator<( const RouteElem& other ) const
{
return (heuristic+shortestToHere) < (other.heuristic+other.shortestToHere);
}
bool operator==( const RouteElem& other ) const
{
return (position.x == other.position.x && position.y == other.position.y);
}
};

所以当元素的位置相等时,元素是等价的,如果一个元素的组合功能小于另一个元素,则该元素小于另一个元素。排序有效,但该集合将接受相同位置的两个元素。

最佳答案

operator==未被 std::set 使用.元素 ab被认为是相等的当且仅当!(a < b) && !(b < a)

关于c++ - std::set 与用户定义的类型,如何确保没有重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335563/

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