स्ट्रक्चर std::hash< ara::core::Variant<
template <typename... Types> struct hash< ara::core::Variant< Types... > > {...};
Specialization of std::hash (hashing function for ara::core::Variant<Types...>)
| Header-Datei | #include "ara/core/variant.h" |
|---|---|
| Forwarding-Header | #include "ara/core/core_fwd.h" |
| Scope | namespace std |
उपयोगकर्ता गाइडएआई जनित
हैश मानों के माध्यम से अनऑर्डर्ड मानक कंटेनरों में कुंजियों के रूप में टाइप-सुरक्षित वेरिएंट्स के उपयोग को सक्षम बनाता है।
हैश मानों के माध्यम से अनऑर्डर्ड मानक कंटेनरों में कुंजियों के रूप में टाइप-सुरक्षित वेरिएंट्स के उपयोग को सक्षम बनाता है।
टेम्पलेट विशेषज्ञता टाइप-सुरक्षित यूनियन प्रकारों के लिए एक हैश फ़ंक्शन प्रदान करती है, ताकि उनका एसोसिएटिव हैश कंटेनरों में निर्बाध रूप से उपयोग किया जा सके। यह एक मानक-अनुरूप फ़ंक्शन एडेप्टर के रूप में कार्य करती है, जो किसी इंस्टेंस की स्थिति को पढ़ती है और इसे एक अद्वितीय हैश मान में परिवर्तित करती है। इसके उपयोग के लिए पूर्वशर्त प्रकार सूची में निहित सभी वैकल्पिक प्रकारों की हैश करने की क्षमता है। अपरिवर्तित सामग्री के साथ, मूल्यांकन समवर्ती रूप से सुरक्षित और साइड-इफ़ेक्ट्स से मुक्त काम करता है।
संदर्भ
टेम्पलेट विशेषज्ञता std::hash<ara::core::Variant<Types...>> AUTOSAR Adaptive कोर प्रकार ara::core::Variant के लिए C++ मानक लाइब्रेरी के मानकीकृत हैशिंग फ्रेमवर्क का विस्तार करती है। मॉड्यूल core के भीतर, ara::core::Variant एक टाइप-सुरक्षित, मेमोरी-अनुकूलित यूनियन के रूप में कार्य करता है, जो किसी भी समय वैकल्पिक प्रकारों की एक परिभाषित सूची से ठीक एक इंस्टेंस को समाहित कर सकता है। ऐसे वेरिएंट डेटा संरचनाओं को std::unordered_map या std::unordered_set जैसे एसोसिएटिव हैश कंटेनरों में कुंजियों के रूप में उपयोग करने में सक्षम होने के लिए, std::hash का संगत विशेषीकरण अनिवार्य रूप से आवश्यक है।
इस प्रकार यह विशेषज्ञता AUTOSAR Adaptive Platform की कार्यात्मक आवश्यकताओं और मानक लाइब्रेरी के जेनेरिक एल्गोरिदम और कंटेनरों के बीच निर्बाध रूप से मध्यस्थता करती है। यह सॉफ़्टवेयर घटकों को डायनेमिक टाइप कास्टिंग या कस्टम रैपर फ़ंक्टर्स के बिना पॉलिमॉर्फ़िक डेटा संरचनाओं को कुशलतापूर्वक अनुक्रमित करने, अग्रेषित करने या कैश करने में सक्षम बनाती है।
जीवनचक्र
हैश विशेषज्ञता का लाइफ़साइकिल अत्यधिक संक्षिप्त है और C++ मानक फ़ंक्टर सम्मेलनों पर आधारित है। वर्ग में कोई पर्सिस्टेंट स्थिति चर या संदर्भित संसाधन नहीं हैं। इसलिए निर्माण अंतर्निहित डिफ़ॉल्ट कंस्ट्रक्टर के माध्यम से सामान्य रूप से किया जाता है, आमतौर पर सीधे स्टैक पर उपयोग के स्थान पर या कंटेनर ऑपरेशनों के भीतर एक अस्थायी ऑब्जेक्ट के रूप में।
चूँकि विशेषज्ञता स्टेटलेस है, ऑब्जेक्ट अप्रतिबंधित रूप से प्रतिलिपि बनाने योग्य और स्थानांतरित करने योग्य होना चाहिए। प्रश्न Q-2cffd290e7f00968 (खुला) विनाश के लिए संसाधनों की किसी स्पष्ट रिलीज़ या डिस्ट्रक्टर लॉजिक की आवश्यकता नहीं होती है। संगामीता के संबंध में, फ़ंक्टर का आह्वान थ्रेड-सुरक्षित है जब तक कि हैश किए जा रहे ara::core::Variant-इंस्टेंस को किसी अन्य निष्पादन थ्रेड द्वारा एक ही समय में संशोधित नहीं किया जाता है। एकाधिक थ्रेड्स हैश फ़ंक्टर के समान इंस्टेंस या समानांतर इंस्टेंस का एक साथ उपयोग कर सकते हैं, बिना किसी बाहरी सिंक्रोनाइज़ेशन की आवश्यकता के।
उपयोग पथ
विशिष्ट उपयोग मानक लाइब्रेरी के एसोसिएटिव कंटेनरों के माध्यम से परोक्ष रूप से या कॉल ऑपरेटर operator() के स्पष्ट निष्पादन के माध्यम से सीधे होता है। एक उपयोग मामला ara::core::Variant के एक इनिशियलाइज़्ड इंस्टेंस के प्रावधान के साथ शुरू होता है, जो एक ठोस वैकल्पिक मान रखता है।
हैश फ़ंक्शन को कॉल करते समय, वेरिएंट की वर्तमान स्थिति की क्वेरी की जाती है। गणना संभवतः दो वैचारिक उप-चरणों में होती है: सबसे पहले, वर्तमान में रखे गए प्रकार के डिस्क्रिमिनेटर या इंडेक्स का निर्धारण किया जाता है। प्रश्न (खुला) इसके बाद, वेरिएंट में निहित ठोस मान को इस प्रकार के उपयुक्त std::hash-विशेषज्ञता को पास किया जाता है। अंत में, std::size_t प्रकार का परिणामी हैश मान उत्पन्न करने के लिए प्रकार इंडेक्स और मान हैश को संयोजित किया जाता है। यह सुनिश्चित करता है कि समान वैकल्पिक मान लेकिन भिन्न प्रकार पहचान वाले वेरिएंट्स को विश्वसनीय रूप से भिन्न हैश मान प्राप्त हों।
त्रुटि परिदृश्य
हैश गणना की मजबूती काफी हद तक टेम्पलेट पैरामीटर्स और पास किए गए वेरिएंट की स्थिति पर निर्भर करती है। एक मौलिक पूर्वशर्त यह है कि पैरामीटर पैक Types... में घोषित सभी प्रकारों के लिए std::hash की एक कार्यात्मक विशेषज्ञता मौजूद हो। यदि केवल एक प्रकार के लिए भी ऐसी परिभाषा अनुपलब्ध है, तो जैसे ही हैश फ़ंक्टर को त्वरित किया जाता है, संकलन विफल हो जाता है।
रनटाइम पर, विधि यह मानती है कि पास किया गया वेरिएंट अमान्य नहीं है। यदि अंतर्निहित वेरिएंट ऑब्जेक्ट पूर्व में विफल असाइनमेंट के कारण अपवाद-प्रेरित रिक्त स्थिति में आ गया है, तो हैश गणना का व्यवहार संभवतः अपरिभाषित है या रनटाइम अपवाद की ओर ले जाता है। प्रश्न Q-d1e0b4858aa9dc16 (खुला) इसके अतिरिक्त, मानक हैश फ़ंक्शन्स की आवश्यकताओं को पूरा करने के लिए व्यक्तिगत वैकल्पिक प्रकारों की हैश गणना से कोई अपवाद नहीं फेंकने की अपेक्षा की जाती है।
यह पाठ AUTOSAR विनिर्देश R25-11 के आधार पर एक AI द्वारा जनरेट किया गया था।
UML क्लास आरेख
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल