比较两个set是否相等?(C++)

假设有两个set如下:

#include <iostream>
#include <vector>
#include <set>
#include <map>
using namespace std;


set<string> setTemp;
set<string> setTemp1;

setTemp.insert("nihao1");
setTemp.insert("nihao2");
setTemp.insert("nihao3");
setTemp.insert("nihao4");

setTemp1.insert("nihao1");
setTemp1.insert("nihao2");
setTemp1.insert("nihao3");
setTemp1.insert("nihao4");

比较二者是否相等,可能有如下两种方法

1,直接比较:

if (setTemp.size() != setTemp1.size()){
    cout << "is not equal.." << endl;
    return;
}
set<string>::iterator it;
set<string>::iterator it1;
//遍历集合中的所有元素 
bool flag = true;
for (it = setTemp.begin(), it1 = setTemp1.begin(); it != setTemp.end(); it++, it1++){
    if (*it1 != *it){
        flag = false;
        break;
    }
}
if (flag == true)
    cout << "has found! "<< endl;

2,借助map比较:

map<set<string>, string> mTemp;
mTemp[setTemp] = "1";

if (mTemp.find(setTemp1) != mTemp.end()){
    cout << "has found!" << endl;
}

猜你喜欢

转载自blog.csdn.net/u010212101/article/details/79958036