आपकी समस्या यह है कि आपके पास फ़ाइल नाम के कुछ हिस्सों के पीछे एक व्याख्या है।
लेक्सिकोोग्राफ़िकल क्रम में, Slide1
Slide10
से पहले Slide5
से पहले है।
आप Slide5
Slide10
से पहले उम्मीद के रूप में आप सबस्ट्रिंग 5
और 10
(पूर्णांक के रूप में) की एक व्याख्या की है।
यदि आपके पास फ़ाइल नाम में महीने का नाम था, तो आप अधिक समस्याओं में भाग लेंगे, और उम्मीद है कि उन्हें तिथि के अनुसार आदेश दिया जाएगा (यानी जनवरी अगस्त से पहले आता है)। आपको इस व्याख्यान में अपनी सॉर्टिंग को समायोजित करने की आवश्यकता होगी (और "प्राकृतिक" आदेश आपकी व्याख्या पर निर्भर करेगा, कोई सामान्य समाधान नहीं है)।
एक अन्य तरीका फ़ाइल नामों को इस तरह प्रारूपित करना है कि आपका सॉर्टिंग और लेक्सिकोोग्राफ़िक ऑर्डर सहमत हो। आपके मामले में, आप अग्रणी शून्य और संख्या के लिए एक निश्चित लंबाई का उपयोग करेंगे। तो Slide1
Slide01
बन जाता है, और फिर आप देखेंगे कि उन्हें क्रमबद्ध रूप से क्रमबद्ध रूप से परिणाम मिलेगा जो आप चाहते हैं।
हालांकि, अक्सर आप किसी एप्लिकेशन के आउटपुट को प्रभावित नहीं कर सकते हैं, और इस प्रकार सीधे आपके प्रारूप को लागू नहीं कर सकते हैं।
मैं उन मामलों में क्या करता हूं: फ़ाइल को एक उचित प्रारूप में नामित करने वाली छोटी स्क्रिप्ट/फ़ंक्शन लिखें, और फिर उन्हें क्रमबद्ध करने के लिए मानक सॉर्टिंग एल्गोरिदम का उपयोग करें। इसका लाभ यह है कि आपको अपनी सॉर्टिंग को अनुकूलित करने की आवश्यकता नहीं है, और सॉर्टिंग के लिए मौजूदा सॉफ़्टवेयर का उपयोग कर सकते हैं। नकारात्मक पक्ष में, ऐसी स्थितियां हैं जहां यह व्यवहार्य नहीं है (क्योंकि फ़ाइल नामों को ठीक करने की आवश्यकता है)।
जब आप तुलना करते हैं, तो पहले तारों से संख्याओं को निकालें, फिर संख्याओं की तुलना करें। – wimh
@ विममेल: यह एक ही उपसर्ग वाले सभी फ़ाइल नामों पर निर्भर करता है, जो मुझे लगता है कि यह आवश्यक नहीं है। यह सभी फ़ाइल नामों पर भी निर्भर करता है जिनमें बिल्कुल एक (शून्य नहीं, दो नहीं) संख्यात्मक घटक होता है। – NPE
असंबद्ध: स्वैपिंग के लिए तारों की प्रतिलिपि क्यों करें? बस पॉइंटर्स को स्वैप करें (और वहां 'std :: swap' ... है)। –