मैं हमेशा सोचा है कि कोईक्यों सी ++ में कोई प्रकार नहीं (v)?
sort(v);// same as std::sort(v.begin(),v.end())
अगर मैं सही ढंग लंबे समय पहले याद मैं एक boostcon क्लिप जहां वक्ता ने कहा कि अवधारणाओं इस के लिए आवश्यक हैं देखा, लेकिन मैं देख रहा हूँ क्यों नहीं है। बीटीडब्ल्यू मैंने कोशिश की (वीएस 11 में) और यह जो मैं देख सकता हूं उससे निकेलि काम करता है।
template <typename Container>
void sortfx(Container& c)
{
std::sort(c.begin(),c.end());
}
int main()
{
std::vector<double> v;
//std::list<double> v; this causes compile errors
v.push_back(1701);
v.push_back(1729);
v.push_back(74656);
v.push_back(2063);
sortfx(v);
assert(std::is_sorted(begin(v),end(v)));
}
संपादित करें: Bjarne खुद एक उदाहरण :) https://www.informit.com/articles/article.aspx?p=2080042&WT.rss_f=Article&WT.rss_a=An%20Interview%20with%20Bjarne%20Stroustrup&WT.rss_ev=a
मान लीजिए कि उन्होंने अभी यह अनुमान लगाया है कि आप केवल दो तर्क लिखने के लिए समय ले सकते हैं, या लोगों को इसका बहुत उपयोग नहीं मिलेगा। यह उन व्यक्तिगत पुस्तकालयों में से एक है जो कुछ लोगों के लिए अच्छा काम कर सकता है। इसके अलावा, अगर उन्होंने पूरे कंटेनर के लिए 'सॉर्ट' जोड़ा, तो उन्हें शायद दूसरों को भी जोड़ना होगा। – chris
आप इसे कार्यान्वित कर सकते हैं। लेकिन क्या होगा यदि आप एक अंतर्निर्मित सरणी को सॉर्ट करना चाहते हैं? आपको इसे प्राप्त करने के लिए SFINAE या कुछ अन्य तंत्र का उपयोग करना चाहिए। यह बिना किसी कारण के कोड है। 'std :: sort (c.begin(), c.end()); 'काफी छोटा है। – mfontanini
@mfontanini और अन्य लोग सोचेंगे कि हमेशा इस्तेमाल किए गए तुलनित्र को निर्दिष्ट करना "पर्याप्त छोटा" है, लेकिन हमें अभी भी यह नहीं करना है। मैं मानता हूं कि यह एक कष्टप्रद चूक है, क्योंकि वास्तव में 99% हम पूरे कंटेनर को सॉर्ट करना चाहते हैं। – Voo