"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आप C++ वैरिएडिक टेम्प्लेट में तर्कों को पैक और अनपैक करने के लिए \"...\" टोकन का उपयोग कैसे करते हैं?

आप C++ वैरिएडिक टेम्प्लेट में तर्कों को पैक और अनपैक करने के लिए \"...\" टोकन का उपयोग कैसे करते हैं?

2024-11-16 को प्रकाशित
ब्राउज़ करें:320

How do you use the \

वैरिएडिक टेम्प्लेट में "..." टोकन के लिए सिंटेक्स नियम

सी में, वेरिएडिक टेम्प्लेट उन टेम्प्लेट के निर्माण को सक्षम करते हैं जो स्वीकार करते हैं तर्कों की परिवर्तनशील संख्या. "..." टोकन इस संदर्भ में एक महत्वपूर्ण भूमिका निभाता है, या तो तर्क पैक या पैरामीटर अनपैकर के रूप में कार्य करता है।

एलिप्सिस प्लेसमेंट के लिए सिंटेक्स नियम

"..." टोकन का स्थान इसके कार्य को निर्धारित करता है:

  • पैक: जब यह किसी नाम के बाईं ओर दिखाई देता है, तो "..." एक तर्क पैक को इंगित करता है : ...थिंग // पैक
  • अनपैक: जब यह किसी एक्सप्रेशन के दाईं ओर दिखाई देता है, तो "..." एक टेम्प्लेट पैरामीटर पैक को अनपैक करता है: थिंग... // अनपैक

उदाहरण: "..." के साथ वैरिएडिक टेम्पलेट

निम्नलिखित वैरिएडिक टेम्पलेट पर विचार करें:

template
unique_ptr make_unique( Args&&... args )
{
    return unique_ptr(new T(std::forward(args)...));
}

इस उदाहरण में, "..." एक तर्क पैक के रूप में कार्य करता है, जबकि फ़ंक्शन कार्यान्वयन में "..." तर्कों को तर्क चर में अनपैक करता है।

भिन्न एलिप्सिस प्लेसमेंट का कारण

टेम्पलेट तर्क सूची और पैरामीटर सूची के बीच एलिप्सिस प्लेसमेंट में अंतर तर्क पैकिंग और पैरामीटर अनपैकिंग के बीच अंतर के कारण है। टेम्प्लेट तर्क सूची में, "..." इंगित करता है कि पैरामीटर को एकल पैरामीटर पैक में पैक किया जाना चाहिए, जबकि पैरामीटर सूची में, "..." इंगित करता है कि तर्क को अलग-अलग पैरामीटर में अनपैक किया जाना चाहिए।

अनपैकिंग पैटर्न

जब "..." अनपैकर के रूप में अभिव्यक्ति के दाईं ओर दिखाई देता है, तो यह एक विशिष्ट पैटर्न का पालन करता है:

  • "..." के बाईं ओर की अभिव्यक्ति को अल्पविराम से अलग करके दोहराया जाता है
  • प्रत्येक पुनरावृत्ति एक अभिव्यक्ति का प्रतिनिधित्व करती है जो टेम्पलेट पैरामीटर पैक से एक तत्व का उपभोग करती है

उन्नत उपयोग: Arrays को आरंभ करना

Elipsis का उपयोग arrays को आरंभ करने के लिए भी किया जा सकता है:

struct data_info
{
     boost::any  data;
     std::size_t type_size;
};

std::vector v{{args, sizeof(T)}...}; //pattern = {args, sizeof(T)}

यह वेक्टर v को उन मानों के साथ आरंभ करता है जहां प्रत्येक तत्व एक संरचना है जिसमें एक args और एक sizeof(T) जोड़ी होती है।

निष्कर्ष में , विविध टेम्प्लेट के संदर्भ में "..." टोकन प्लेसमेंट और अनपैकिंग पैटर्न के लिए विशिष्ट सिंटैक्स नियमों का पालन करते हुए एक तर्क पैक और पैरामीटर अनपैकर दोनों के रूप में कार्य करता है। इसका लचीला उपयोग शक्तिशाली टेम्पलेट निर्माण और अनुकूलन की अनुमति देता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3