मैं बहुत अधिक उपयोग कर रहा हूं std::set<int>
और अक्सर मुझे यह जांचना पड़ता है कि क्या इस तरह के सेट में नंबर है या नहीं।
मुझे यह लिखना स्वाभाविक लगेगा:
if (myset.contains(number))
...
लेकिन एक contains
सदस्य की कमी के कारण , मुझे बोझिल लिखना होगा:
if (myset.find(number) != myset.end())
..
या नहीं के रूप में स्पष्ट:
if (myset.count(element) > 0)
..
क्या इस डिजाइन निर्णय का कोई कारण है?
count()
दृष्टिकोण के साथ एक और (अधिक मौलिक) समस्या यह है कि यह एक से अधिक काम countains()
करना होगा।
contains()
जो रिटर्न एक bool
हैं जहां तत्व संग्रह में है के बारे में महत्वपूर्ण जानकारी खो । find()
उस सूचना को पुनरावृत्तिकर्ता के रूप में संरक्षित और लौटाता है, इसलिए STL जैसी सामान्य लाइब्रेरी के लिए एक बेहतर विकल्प है। (यह कहने के लिए नहीं है कि bool contains()
एक बहुत अच्छा नहीं है, या यहां तक कि आवश्यक है, हालांकि।)
contains(set, element)
सेट के सार्वजनिक इंटरफ़ेस का उपयोग करके एक निशुल्क फ़ंक्शन लिखना आसान है । इसलिए, सेट का इंटरफ़ेस कार्यात्मक रूप से पूर्ण है; एक सुविधा विधि जोड़ने से किसी भी अतिरिक्त फ़ंक्शन को सक्षम किए बिना इंटरफ़ेस बढ़ जाता है, जो कि C ++ तरीका नहीं है।