क्या सी ++ टेम्पलेट क्लास है जो क्रमपरिवर्तन और क्रमपरिवर्तन समूह के साथ संचालन लागू करती है? इस तरह के वर्ग को उत्पाद खोजने और उलटा, गुणा, इत्यादि को लागू करना हैक्या सी ++ कक्षा है जो क्रमपरिवर्तन के साथ संचालन लागू करती है?
उत्तर
एसटीएल में algorithm.h में क्रमपरिवर्तन के लिए एक फ़ंक्शन शामिल है। इसके लिए यहां एक उदाहरण दिया गया है।
int main() { int myints[] = {1,2,3}; cout << "The 3! possible permutations with 3 elements:\n"; sort (myints,myints+3); do { cout << myints[0] << " " << myints[1] <<" " << myints[2] << endl; } while (next_permutation (myints,myints+3)); return 0; }
कृपया, "एल्गोरिदम" नहीं "algorithm.h"! – KTC
उदाहरण के लिए व्यस्त अनुमति खोजने में मेरी सहायता कैसे होती है? –
यह नहीं करता है। यह फ़ंक्शन केवल क्रमपरिवर्तन समूह के सदस्यों को बताता है। यह समूह की संरचना के बारे में कुछ भी नहीं जानता - यह केवल परिभाषित आदेश वाले इनपुट सरणी के तत्वों पर निर्भर करता है। –
मुझे एक के बारे में पता नहीं है, लेकिन इसे लागू करने के लिए पर्याप्त आसान होना चाहिए। आंतरिक रूप से आप एक वेक्टर के रूप में क्रमपरिवर्तन का प्रतिनिधित्व कर सकते हैं उदा। (1 3 4 2 7 5 6) 1-7> 1, 2-> 3, 3-> 4, 4-> 2 आदि भेजने या चक्रों के एक सेट के रूप में 1-7 की अनुमति होने के नाते (1) (2 3 4) (5 7 6), और इनके संदर्भ में संचालन को लागू करें। संभावित रूप से टेम्पलेट तर्क क्रमपरिवर्तन समूह का आकार होगा।
आधुनिक सी ++ में, आप इसके लिए कक्षा का उपयोग नहीं करेंगे। आप शायद कई फ़ंक्शन टेम्पलेट्स का उपयोग करेंगे। एक इनपुट टेम्पलेट प्रति ऑपरेशन जिसे आप समर्थन देना चाहते हैं, वास्तविक इनपुट श्रेणी templatized के साथ। – MSalters
कार्यात्मक प्रोग्रामिंग एक विकल्प नहीं है। ऑब्जेक्ट उन्मुख प्रोग्रामिंग अच्छा है। मुझे वास्तव में टेम्पलेट वर्ग की आवश्यकता है। –
@MSalters: एक फ़ंक्शन के लिए "इनपुट रेंज" क्या है जो दो क्रमिकता लेता है, और उन क्रमपरिवर्तनों का उत्पाद देता है? क्या आप सुझाव दे रहे हैं कि क्रमशः क्लाइंट को क्रमशः अपारदर्शी वस्तुओं के बजाए इटरेटर जोड़े के रूप में सबसे अच्छा प्रतिनिधित्व किया जाता है? मुझे लगता है कि एलेक्सी std :: next_permutation की तुलना में समूह सिद्धांत के अधिक ज्ञान के साथ कुछ है। –