बस एहसास हुआ कि std::count_if
returns a signed value।std :: count_if हस्ताक्षरित हस्ताक्षर के बजाय हस्ताक्षरित मूल्य क्यों करता है?
इस तरह से डिज़ाइन क्यों किया गया है? यह दोनों मेरी राय में कोई अर्थ नहीं है (नतीजा केवल एक प्राकृतिक संख्या, यानी गैर-ऋणात्मक पूर्णांक हो सकता है), क्योंकि यह किसी भी चेतावनी या उपयोग किए बिना कंटेनर के size()
पर इस परिणाम की तुलना करने के रूप में सरल कुछ करने की अनुमति नहीं देता है स्पष्ट प्रकार रूपांतरण।
मुझे सच में लगता है कि वापसी प्रकार size_type
होना चाहिए।
क्या मुझे कुछ याद आ रही है?
यह 'गिनती' के लिए इटरेटर के 'अंतर_ प्रकार' को वापस करने के लिए कुछ समझ में आता है, क्योंकि यह तर्कों का अंतर बहुत अधिक है, यह 'इंटरफ़ेस' को 'count_if' के लिए रखने के लिए समझ में आता है, और यह समान रूप से कुछ बनाता है बिडरेक्शनल इटरेटर्स के लिए 'difference_type' पर हस्ताक्षर किए जाने के लिए अर्थ। – BoBTFish
इसी प्रकार एक निरंतर समय में दो 'std :: list' क्यों विभाजित नहीं कर सकता? –
@WojciechFrohmberg: सरल, आपको तत्वों की गणना करने की आवश्यकता है। एक बार बनाई गई सूची में ओ (1) '.size() 'है जिसका अर्थ यह है कि यह कैश किया गया है, – MSalters