gpt4 book ai didi

C++ 标准设置插入不是 "working"

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:58 27 4
gpt4 key购买 nike

我在设置 std 时遇到了一些问题。我知道它不允许您插入重复元素并且(我认为)我的代码不会尝试插入重复元素。但似乎集合没有插入两个元素。问题是什么?考虑到这两个元素的集合是否相等?为什么?

#include <bits/stdc++.h>
using namespace std;

struct sam{
double a,b, tam;
sam(){

}
sam(double a1, double b1){
a = a1;
b = b1;
tam = b - a;
}
bool operator<(const sam &p) const{
return tam > p.tam;
}

};
set<sam> ssw;

int main(void){

ssw.insert(sam(0,2));
ssw.insert(sam(4,6));
cout<<ssw.size()<<"\n"; // prints "1"

return 0;
}

最佳答案

对于这两个对象,tam 的值是 2.0。自 operator<函数使用该值,两个对象被认为是相等的。

顺便说一句,使用 float 来比较两个对象并不是一个好主意。由于浮点表示方式的不精确性,您可能会得到意想不到的结果。

关于C++ 标准设置插入不是 "working",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32218118/

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