संभव डुप्लिकेट:
Why does the C++ standard algorithm “count” return a ptrdiff_t instead of size_t?क्यों std :: count (_if) iterator वापस करें :: size_tpe size_t के बजाय?
वहाँ एल्गोरिथ्म std::count
/std::count_if
मानक C++ है।
template<class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count(InputIterator first, InputIterator last, const T& value);
template<class InputIterator, class Predicate>
typename iterator_traits<InputIterator>::difference_type
count_if(InputIterator first, InputIterator last, Predicate pred);
प्रभाव: iterators की संख्या देता है मैं सीमा [प्रथम, अंतिम) जिसके लिए निम्नलिखित इसी की स्थिति पकड़ में: * मैं == मूल्य, pred (* i) = झूठी!।
difference_type
iterator's difference_type
, जो नकारात्मक हो सकता है, लेकिन count
केवल मूल्य लौट सकते हैं> = 0. क्यों difference_type
और उदाहरण के लिए नहीं size_t
?
धन्यवाद, महान स्पष्टीकरण। – ForEveR
@DietmarKuehl लेकिन 'iterator_traits <इनपुट Iterator> :: difference_type' क्यों बेहतर विकल्प है? यह ज्यादातर मामलों में एक 8-बाइट-हस्ताक्षरित पूर्णांक है, जो पहले से ही तर्क को तोड़ देता है कि 'size_t' (8-बाइट-हस्ताक्षरित पूर्णांक) काफी बड़ा नहीं हो सकता है! –
@GrimFandango: अन्य iterators के लिए किए गए विकल्पों को 'TremendousIterator :: difference_type' की अपनी पसंद को कैसे प्रभावित करता है? मुद्दा यह है कि 'std :: size_t' का उपयोग करके विशेष मामलों को विशेष विकल्पों का उपयोग करने के लिए नेस्टेड प्रकार का उपयोग करते समय उपयुक्त विकल्प बनाने की अनुमति मिलती है। –