2010-11-18 12 views
16

कभी-कभी मैं इन सभी my_vector.begin(), my_vector.end() शोर से थक जाता हूं। पिछले साल boostcon पर, आंद्रेई Alexandrescu के मुख्य भाषण Iterators Must Go (video)सी ++ में श्रेणियों की स्थिति क्या है?

वहाँ सी ++ में पर्वतमाला शुरू करने पर कोई प्रगति है शीर्षक था, तो मैं अंत में std::sort(my_vector) कह सकते हैं?

+0

क्या सी ++ को पायथन की तरह दिखने के लिए कुछ मार्च है? –

+12

@ माइक: कोई उम्मीद कर सकता है। –

+0

मैंने सी ++ 0 एक्स के बारे में पढ़ने के दौरान कहीं भी एल्गोरिदम के रेंज-आधारित इंटरफेस को देखा है लेकिन मुझे याद नहीं है। तो मैं अब जवाब जानना चाहता हूं। – Klaim

उत्तर

6

सी ++ में सीमा अभी भी अपर्याप्त अनुभव है ।
वर्तमान प्रयोगात्मक कार्यान्वयन के रूप में, बूस्ट.रेंज 2.0 और ओवन रेंज लाइब्रेरी हैं।

+0

और प्रत्येक मानक एल्गोरिदम बूस्ट लिब में लपेटा जाता है, इसलिए कम से कम 'बूस्ट :: सॉर्ट (my_vector) '(यदि' std :: sort' नहीं है) * वर्तमान * है, भविष्य नहीं। – rafak

2

जहां तक ​​मुझे पता है, उस अंत में कोई प्रगति नहीं की गई है।

2
#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <iterator> 

template< class Container > 
void sort(Container& c) { sort(c.begin(), c.end()); } 

int main() 
{ 
    using namespace std; 

    int const   data[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 4}; 
    vector<int>   v(data, data + sizeof(data)/sizeof(*data)); 

    sort(v); 
    copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); 
} 
बेशक

, की जगह सदस्य फ़ंक्शन को कॉल begin और endstartOf और endOf (अपने संस्करण) की कॉल के साथ, कम से कम जब तक C++ 0x ...

+1

बूस्ट :: शुरू करें और बढ़ावा दें :: अंत तक काम करें जब तक आपके पास समर्थन न हो std :: शुरू करें और std :: end। –

+2

कि सवाल का जवाब नहीं है, है ना? – Klaim

+1

@Klaim: यह प्रश्नों में से एक का जवाब देता है, ओपी की इच्छा व्यक्त करने में सक्षम होना चाहिए "आखिरकार 'std :: sort (my_vector)' "कहें। नूह ने मुख्य प्रश्न का उत्तर दिया। वैसे भी, एक सवाल पूछना जोर देकर एक अच्छा जवाब खराब मत करो। चीयर्स और एचटी।, –

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