मैं दो std::set
दो 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
प्रश्न:
इस यह करने के लिए सही तरीका है? या दो सेट की तुलना करने का कोई अन्य (विशेष) तरीका है?
यदि 'std :: set' लागू करता है 'ऑपरेटर ==' मुझे उम्मीद है कि यह सही होगा। –
यह इसे लागू करता है, और यह सही काम करता है। लेकिन क्या यह सवाल है? या आप पूछ रहे हैं कि 'फॉर लूप सही है या नहीं? – jogojapan
यदि आप 's1' और 's2' do _not_ तत्वों को निर्धारित करने के लिए कोई तरीका ढूंढ रहे हैं, तो आप [' std :: set_symmetric_difference'] (http://en.cppreference.com/] को देखना चाहेंगे डब्ल्यू/सीपीपी/एल्गोरिदम/set_symmetric_difference) ' 'हेडर से। –
jogojapan