यहाँ रूसी से हिंदी में अनुवादित प्रोग्रामिंग कार्य का टेक्स्ट दिया गया है: सामान्यीकृत कैश जिसमें प्राथमिकता और जीवनकाल होता है
C#
Hard
generics
कार्य «यहाँ रूसी से हिंदी में अनुवादित प्रोग्रामिंग कार्य का टेक्स्ट दिया गया है: सामान्यीकृत कैश जिसमें प्राथमिकता और जीवनकाल होता है»
```html
एक सामान्यीकृत क्लास Cache<TKey, TValue> लागू करें, जो निर्दिष्ट जीवनकाल (TimeToLive) और प्राथमिकता (int) वाले तत्वों को संग्रहीत करता है। तत्व जोड़ते समय, यदि कैश अधिकतम आकार से अधिक हो जाता है, तो सबसे कम प्राथमिकता वाला तत्व हटा दिया जाता है, और समान प्राथमिकता होने पर सबसे पुराना तत्व हटा दिया जाता है। TimeToLive समाप्त होने पर तत्व को समाप्त माना जाता है और अनुरोध करने पर वापस नहीं किया जाता है। विधियाँ: Add(TKey key, TValue value, int priority) — तत्व जोड़ता या अद्यतन करता है; TryGet(TKey key, out TValue value) — true लौटाता है यदि कुंजी मौजूद है और समाप्त नहीं हुई है, अन्यथा false; RemoveExpired() — सभी समाप्त तत्वों को हटाता है। लॉक का उपयोग करके थ्रेड-सुरक्षा लागू करें।
```
एक सामान्यीकृत क्लास Cache<TKey, TValue> लागू करें, जो निर्दिष्ट जीवनकाल (TimeToLive) और प्राथमिकता (int) वाले तत्वों को संग्रहीत करता है। तत्व जोड़ते समय, यदि कैश अधिकतम आकार से अधिक हो जाता है, तो सबसे कम प्राथमिकता वाला तत्व हटा दिया जाता है, और समान प्राथमिकता होने पर सबसे पुराना तत्व हटा दिया जाता है। TimeToLive समाप्त होने पर तत्व को समाप्त माना जाता है और अनुरोध करने पर वापस नहीं किया जाता है। विधियाँ: Add(TKey key, TValue value, int priority) — तत्व जोड़ता या अद्यतन करता है; TryGet(TKey key, out TValue value) — true लौटाता है यदि कुंजी मौजूद है और समाप्त नहीं हुई है, अन्यथा false; RemoveExpired() — सभी समाप्त तत्वों को हटाता है। लॉक का उपयोग करके थ्रेड-सुरक्षा लागू करें।
```
इनपुट प्रारूप
पहली पंक्ति: कैश का अधिकतम आकार (int) और सेकंड में जीवनकाल (int)। दूसरी पंक्ति: कमांड की संख्या N (int)। इसके बाद N पंक्तियाँ, प्रत्येक कमांड: 'add key value priority' या 'get key' या 'remove_expired'।
आउटपुट प्रारूप
प्रत्येक 'get' कमांड के लिए, यदि कुंजी मिलती है और समाप्त नहीं हुई है तो मान प्रिंट करें, अन्यथा 'null' प्रिंट करें। 'remove_expired' के लिए हटाए गए तत्वों की संख्या प्रिंट करें। 'add' के लिए कुछ भी प्रिंट न करें।
उदाहरण
उदाहरण 1
इनपुट
3 5
8
add a 10 1
add b 20 2
get a
add c 30 3
add d 40 1
get b
get d
remove_expired
आउटपुट
10
null
40
1
उदाहरण 2
इनपुट
2 10
6
add x 100 5
add y 200 5
get x
add z 300 5
get y
get z
आउटपुट
100
null
300
main.cs