में एक विशेष स्ट्रिंग को मैप करने के लिए कैसे करें मैं कुछ वित्तीय व्यापार कार्य कर रहा हूं। मैं स्टॉक प्रतीक का एक सेट है लेकिन वे बहुत स्पष्ट पैटर्न है: यह दो अक्षर AB
, AC
AD
और चालू माह के जो एक चार अंकों की संख्या है से बना है: 1503
, 1504
, 1505
। कुछ उदाहरण हैं:निर्दिष्ट पूर्णांक
AB1504
AB1505
AC1504
AC1505
AD1504
AD1505
....
चूंकि इन तार इतनी अच्छी तरह से तैयार कर रहे हैं नमूनों, मैं इतना है कि मैं तेजी से एक्सेस के लिए सरणी सूचकांक के रूप में पूर्णांक उपयोग कर सकते हैं एक अद्वितीय पूर्णांक में (हैश) मैप करने के लिए स्ट्रिंग के प्रत्येक चाहते हैं, चूंकि मेरे पास मेरे सिस्टम के अंदर बहुत सारे पुनर्प्राप्तियां हैं और std::unordered_map
या कोई अन्य हैश नक्शा पर्याप्त तेज़ नहीं है। मेरे पास परीक्षण दिखाते हैं कि सामान्य हैश नक्शा सौ-नैनोसेकंड विलंबता स्तर है जबकि सरणी अनुक्रमण हमेशा 100 नैनो के अधीन होता है। मेरा आदर्श मामला होगा, उदाहरण के लिए, AB1504
नक्शा पूर्णांक 1
, AB1505
मानचित्र 2
पर मानचित्र ...., तो मैं इन प्रतीकों से संबंधित जानकारी तक पहुंचने के लिए अंदर एक सरणी बना सकता हूं। मैं कुछ हैश एल्गोरिदम या अन्य विधियों को समझने की कोशिश कर रहा हूं जो मेरे लक्ष्य को प्राप्त कर सकते हैं लेकिन पता नहीं लगा सके। क्या आपके पास इस समस्या पर कोई सुझाव है?
एक साधारण विचार: हेक्साडेसिमल (या उच्च काल्पनिक आधार) संख्या के रूप में अपना पैटर्न देखें और इसे अद्वितीय संख्या प्राप्त करने के लिए दशमलव में परिवर्तित करें। हालांकि यह 0 से शुरू नहीं होता है और वे परिणाम नहीं हैं – Emadpres
आप डेटा को संपीड़ित करने की तरह कुछ भी कोशिश कर सकते हैं (zlib, हफमैन, lzw, आदि?) और डिकंप्रेशन डेटा को पूर्व-साझा करना (इसे अपने सभी संदेशों के लिए पुन: उपयोग करें या "विकसित करें यह "संचार के प्रत्येक पक्ष पर निश्चित रूप से) ताकि संदेश में" हेडर "डेटा ओवरहेड के रूप में न हो। –
क्या आपके पास संख्या प्रारूप पर कुछ और जानकारी है? जैसा कि दो पहले अंक 2000 के बाद वर्षों का प्रतिनिधित्व करते हैं? यदि कुछ भी हो, तो अक्षरों के लिए क्या खड़ा है? क्या आपको एए 1501 (या इसी तरह) से पहले सामानों को संबोधित करने की आवश्यकता है? – holroy