如何判断一个结构体的两个实例是否完全一致?

亭台六七座 2020-05-08 04:26:45
各位大佬,如何判断一个结构体的两个实例是否完全一致?
要每个值挨着判断吗?有没有更好的方法?
...全文
926 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_47780708 2020-05-30
  • 打赏
  • 举报
回复
学习一下!!!!!!
DreamLife. 2020-05-29
  • 打赏
  • 举报
回复
围观,学习
  • 打赏
  • 举报
回复
如果是trivial类,也就是不包含指针成员的类 可以直接内存比对 对于有指针深拷贝的类,那就只能自己重载相等运算符了
donwmufromdying 2020-05-18
  • 打赏
  • 举报
回复
现代c++已经没有结构体这种说法了,结构体和union都是重c里边继承下来的概念。现在你可以都看作类。只是类的缺省成员变量是private 还是 public的区别
donwmufromdying 2020-05-18
  • 打赏
  • 举报
回复
要看你的结构体内部是不是都是简单类型,而且没有指针,如果都是简单类型而且不是指针的话。直接memcmp比较内存就可以。 否则就需要你去重写operator==,在里边去比较每一个成员变量。
火花20180731 2020-05-10
  • 打赏
  • 举报
回复
1.memcmp可以比较两块内存数据是否完全一致,当然这种比较方式并不适用于带指针成员的结构体
2.在创建结构体时可以重载==、>、<这些运算符,在重载函数中进行成员比较,可以省去其他时候比较的工作量
scribbler 2020-05-10
  • 打赏
  • 举报
回复
如果只是判断实例化的后是否同一个,那么通过地址比较可以得出。 如果要判断2个实例或者对象数据是否完全一致,准确的化只能对其中结构成员值一一比较,2楼的可以参考
ooolinux 2020-05-08
  • 打赏
  • 举报
回复
memcmp有这个吗?
亭台六七座 2020-05-08
  • 打赏
  • 举报
回复
引用 1 楼 Italink 的回复:
可以重载运算符==,还可以用(反)序列化,你可以搜一下

#include<iostream>
#include<string>
#include<stack>
#include<cmath>
using namespace std;
struct Compare {
int i;
double b;
char c;

bool operator ==(const Compare& o) const {
return i == o.i && b == o.b && c == o.c;
}

};
int main()
{
Compare a{ 1,0.1,'a' };
Compare b{ 1,0.1,'a' };
cout << (a == b) << endl; //output:1
b.c = 'b';
cout << (a == b) << endl; //output:0
return 0;
}
重载==里面的代码就是挨着判断啊
Italink 2020-05-08
  • 打赏
  • 举报
回复
可以重载运算符==,还可以用(反)序列化,你可以搜一下

#include<iostream>
#include<string>
#include<stack>
#include<cmath>
using namespace std;
struct Compare {
    int i; 
    double b;
    char c;

    bool operator ==(const Compare& o) const {
        return i == o.i && b == o.b && c == o.c;
    }

};
int main()
{
    Compare a{ 1,0.1,'a' };
    Compare b{ 1,0.1,'a' };
    cout << (a == b) << endl;   //output:1
    b.c = 'b';
    cout << (a == b) << endl;   //output:0
    return 0;
}

16,202

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧