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

C++ कंटेनरों में विषम वस्तुओं को कैसे संग्रहीत करें: बूस्ट::कोई भी या कस्टम कार्यान्वयन?

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

 How to Store Heterogeneous Objects in C   Containers: boost::any or Custom Implementation?

सी कंटेनरों में विषम वस्तुओं को संग्रहीत करना

सी कंटेनरों को आमतौर पर सजातीय तत्वों की आवश्यकता होती है, जिसका अर्थ है कि वे केवल एक ही प्रकार की वस्तुओं को रख सकते हैं। हालाँकि, ऐसी स्थितियाँ हैं जहाँ आपको एक कंटेनर की आवश्यकता हो सकती है जो डेटा प्रकारों के मिश्रण को समायोजित कर सके। यह आलेख बताता है कि boost::any लाइब्रेरी और एक कस्टम दृष्टिकोण का उपयोग करके इसे कैसे प्राप्त किया जाए। जो किसी भी प्रकार का C धारण कर सकता है। एक कंटेनर में boost::any के उदाहरणों को संग्रहीत करके, आप वस्तुओं का एक विषम संग्रह प्राप्त कर सकते हैं। यह दृष्टिकोण इसकी मजबूती और किनारे के मामलों से निपटने के लिए अनुशंसित है।

कस्टम कार्यान्वयन

यदि आप अधिक मैन्युअल दृष्टिकोण पसंद करते हैं, तो आप एक कस्टम संरचना या संघ बना सकते हैं सक्रिय प्रकार को निर्दिष्ट करने के लिए एक संकेतक के साथ सभी अपेक्षित प्रकारों के सदस्यों को जोड़ता है।

संरचना दृष्टिकोण:

struct HeterogeneousContainer { int मैं; एसटीडी::स्ट्रिंग एस; डबल डी; पूर्णांक प्रकार; // इंट के लिए 0, स्ट्रिंग के लिए 1, डबल के लिए 2 };

संघ दृष्टिकोण (सावधानी के साथ उपयोग करें):

struct HeterogeneousContainer {
  int i;
  std::string s;
  double d;
  int type; // 0 for int, 1 for string, 2 for double
};
संघ विषमकंटेनर { int मैं; एसटीडी::स्ट्रिंग एस; डबल डी; };

हालाँकि, इस दृष्टिकोण की सीमाएँ और संभावित नुकसान हैं, जैसे:

union HeterogeneousContainer {
  int i;
  std::string s;
  double d;
};
एक निष्क्रिय सदस्य को पढ़ना इसके परिणामस्वरूप अपरिभाषित व्यवहार हो सकता है।

सही प्रकार निर्दिष्ट है यह सुनिश्चित करने के लिए सावधानीपूर्वक प्रबंधन की आवश्यकता है और एक्सेस किया गया।
  • निष्कर्ष
  • सी कंटेनर में विषम वस्तुओं को संग्रहीत करने की आवश्यकता का सामना करते समय, इसकी सुरक्षा और प्रभावशीलता के लिए boost::any लाइब्रेरी का उपयोग करने पर विचार करें . यदि वांछित है, तो किसी संरचना या संघ का उपयोग करके एक कस्टम कार्यान्वयन बनाया जा सकता है, लेकिन उनकी सीमाओं का ध्यान रखें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3