2013-03-06 10 views
5

ऑनलाइन उपलब्ध कुछ उदाहरण समानता ऑपरेटर का उपयोग दो एसटीएल vector ऑब्जेक्ट्स की सामग्री की तुलना करने के लिए करते हैं ताकि यह सत्यापित किया जा सके कि उनके पास एक ही सामग्री है।एसटीएल वैक्टर की तुलना करने के इन दो तरीकों के बीच क्या अंतर है?

vector<T> v1; 
// add some elements to v1 

vector<T> v2; 
// add some elements to v2 

if (v1 == v2) cout << "v1 and v2 have the same content" << endl; 
else cout << "v1 and v2 are different" << endl; 

इसके बजाय, मैं अन्य उदाहरण हैं, जहां std::equal() समारोह प्रयोग किया जाता है पढ़ें।

bool compare_vector(const vector<T>& v1, const vector<T>& v2) 
{ 
    return v1.size() == v2.size() 
      && std::equal(v1.begin(), v1.end(), v2.begin()); 
} 

एसटीएल वैक्टर की तुलना करने के इन दो तरीकों के बीच क्या अंतर है?

+1

कोई फर्क नहीं पड़ता। –

उत्तर

8

दोनों एक ही तरीके से व्यवहार करते हैं। कंटेनर आवश्यकताओं (तालिका 96) का कहना है कि a == b के परिचालन अर्थ विज्ञान है:

distance(a.begin(), a.end()) == distance(b.begin(), b.end()) && 
equal(a.begin(), a.end(), b.begin()) 
+0

केरेक एसबी, तालिका 96 क्या है? – astidham2003

+1

बराबर ऑपरेटर कैसे परिभाषित किया गया है? IOW, दूरी के बजाय आकार() का उपयोग क्यों नहीं करें? –

+1

@ रयानगुथरी: "परिचालन अर्थशास्त्र"। सबकुछ शायद वैसे भी रेखांकित किया गया है, और 'आकार() 'आमतौर पर एक अंतर के रूप में गणना की जाती है। इसे पसीना मत करो। –

5

अच्छा प्रश्न है। मुझे संदेह है कि लोग == का उपयोग नहीं करते हैं क्योंकि वे वहां नहीं जानते हैं, लेकिन यह वास्तव में हाथ-कोडित संस्करण करता है। अनुक्रम कंटेनरों और सहयोगी कंटेनरों के लिए यह हमेशा रहा है।

+0

क्या यह सी ++ 03 –

+2

@ वैन में वैक्टरों के लिए समान है - हाँ, यह हमेशा मामला रहा है। और मुझे अपने मूल उत्तर में गलत याद आया; सहयोगी कंटेनरों में हमेशा '==' (और '! =') होता है। –

संबंधित मुद्दे