2011-08-25 16 views
6

मुझे कैसे पता चलेगा कि बराबर_रेंज को कोई मिलान केस नहीं मिला?सी ++ मल्टीमैप बराबर_रेंज कुछ भी नहीं मिला

चाहते:

multimap<string,string> mapdic; 
pair<multimap<string,string>::iterator,multimap<string,string>::iterator> ret; 
// insert some string pairs 


ret=mapdic.equal_range(thisUpperCaseName); 


    if (???)//how to test equal_range find nothing? 
    {  
}else{ 

    } 

किसी को भी मदद कर सकते हैं?

धन्यवाद

+0

इसके अलावा क्या आप इसके बजाय आप क्या चाहते हैं की तुलना में की जरूरत के बारे में कोई अवांछित टिप्पणी के समान है। आपको एल्गोरिदम और कंटेनर पैरामीटर को आंतरिक बनाना चाहिए और दर्शन वापस करना चाहिए। आपको समझना चाहिए कि अंतिम तत्व के बाद अंतराल का अंत आंतरिक रूप से एक सूचक है। वे आपको इटरेटर के साथ पॉइंटर्स को भ्रमित न करने के लिए परेशान कर सकते हैं, लेकिन आईएमएचओ किसी के लिए कंटेनर और एल्गोरिदम इंटरफ़ेस को वास्तव में समझने का एकमात्र तरीका है। –

उत्तर

18

:)

कहते हैं आपके result.first == result.second तो इसका मतलब है कोई बात नहीं है आपकी equal_range रिटर्न प्रकार pair

का परिणाम है।

अगर वहाँ एक भी तत्व तो result.first != result.second

if(ret.first == ret.second) 
{ 
// empty range 
} 
else 
{ 
    //at least an element. 
} 
-1

अनिवार्य रूप से अजीत के जवाब :) ret.first == mapdic.end()

+1

अनिवार्य रूप से गलत, 'परिणाम। पहला == परिणाम। सेकेंड' सही परीक्षण है, आपका परीक्षण बहुत विशिष्ट है। – john

+0

व्याख्या करने के लिए देखभाल? – Carl

+1

जब अजीत का परीक्षण सत्य है तो आपका परीक्षण गलत हो सकता है। उदाहरण के लिए यदि बराबर_रेंज कुछ भी नहीं पाता है तो यह परिणाम वापस कर सकता है। सबसे पहले == mapdic.begin() और result.second == mapdic.begin(), यह अजीत के परीक्षण के तहत सच होगा लेकिन आपके नीचे झूठा होगा (मानना ​​है कि मैपडिक खाली नहीं है) । – john

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