gpt4 book ai didi

c++ - 如何比较两个 std::set?

转载 作者:IT老高 更新时间:2023-10-28 12:42:43 44 4
gpt4 key购买 nike

我对两个 std::set

做这样的比较
#include <cstdlib>
#include <cstdio>
using namespace std;

#include <vector>
#include <set>


int main(int argc, char** argv)
{
int myints1[]= {10,20,30,40,50};
int myints2[]= {50,40,30,20,10};
std::set<int> s1 (myints1,myints1+5);
std::set<int> s2(myints2,myints2+5);
if(s1==s2){
printf("sets: true");
}else printf("sets: false");
std::set<int>::iterator it2=s2.begin();
for(std::set<int>::iterator it1=s1.begin();it1!=s1.end();it1++){
printf("\ns1: %d s2: %d",*it1,*it2);
it2++;
}
}

输出:

sets: true
s1: 10 s2: 10
s1: 20 s2: 20
s1: 30 s2: 30
s1: 40 s2: 40
s1: 50 s2: 50

问题:

这是正确的做法吗?还是有任何其他(特殊)方法来比较两组?

最佳答案

是的,operator== 已为所有标准容器正确定义(除了无序容器 - 基于标准的 23.2.5.2),并且通常会执行字典比较。参见示例 here .相关引述:

Checks if the contents of lhs and rhs are equal, that is, whether lhs.size() == rhs.size() and each element in lhs has equivalent element in rhs at the same position.

由于 std::set 是一个有序容器,任何具有相同大小和相同元素的集合(假设比较器相同)必然会将它们放在相同的位置,因此将比较相等.

关于c++ - 如何比较两个 std::set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182958/

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