पृष्ठभूमि
मैं एक ध्वन्यात्मक कनवर्टर प्रोग्राम पर काम कर रहा हूं जो अंग्रेजी को धर्मान्तरित करता है समकक्ष क्षेत्रीय भाषा पाठ में पाठ क्षेत्रीय भाषाओं में अंग्रेजी पत्रों की तुलना में अधिक वर्ण होंगे और क्षेत्रीय भाषा के फोंट फ़ॉन्ट में लगभग सभी पदों (1-255) का उपयोग करेंगे।
मेरा प्रोग्राम अलग फ़ॉन्ट्स का समर्थन करता है और मैंने एक फ़ॉन्ट वर्ग बनाया है जो कि तरीकों के पास वर्णों तक पहुंच देगा। इस कक्षा में प्रत्येक चरित्र का प्रतिनिधित्व करने वाले 255 तरीके होंगे। ये सभी वर्चुअल के रूप में चिह्नित हैं ताकि एक नया फ़ॉन्ट आवश्यक वर्ण विधियों को ओवरराइड कर सके।
इस फ़ॉन्ट वर्ग में तरीकों तुच्छ हैं। सभी विधियां एकल पंक्ति हैं उदाहरण होगा
स्ट्रिंग मानकफ़ॉन्ट :: व्यंजन 1 () {वापसी "a"; } स्ट्रिंग मानकफ़ॉन्ट :: व्यंजन 2 () {वापसी "बी"; } ..
प्रश्न
- क्या एक क्लास में 255 आभासी फ़ंक्शंस किसी भी प्रदर्शन संबंधी समस्याएं पैदा करेगा? मुझे vtable सामान के बारे में पता है, लेकिन मुझे यकीन नहीं है कि इस परिदृश्य में इसका कितना असर है।
- क्या कोई इस वर्ग के लिए वैकल्पिक डिजाइन का सुझाव दे सकता है? मुख्य डिज़ाइन लक्ष्य, व्युत्पन्न कक्षाओं को आवश्यक तरीकों को ओवरराइड करने की अनुमति देना है। मैंने पात्रों को नक्शा या वेक्टर जैसे कंटेनरों में जोड़ने के बारे में सोचा है और वर्ण प्राप्त करने के लिए विधि प्रदान करने के बारे में सोचा है। लेकिन चूंकि मेरे पास 255 वस्तुओं होंगे और इस वर्ग को अक्सर प्रयोग किया जाता है, मुझे लगता है कि हर बार मुझे पात्र के लिए कंटेनर को लूप करना होगा, जो फिर से एक मुद्दा है।
कोई विचार?
मेरा सुझाव है कि आप एक मानक एन्कोडिंग का उपयोग करें
वैसे भी: आपके प्रश्नों का उत्तर देने के लिए
एक मानक एन्कोडिंग को "यूनिकोड" कहा जाता है, उदाहरण के लिए
क्या एक क्लास में 255 वर्चुअल फंक्शंस किसी भी प्रदर्शन संबंधी समस्याएं पैदा करेगा?
एक शब्द में: नहीं, यह नहीं होगा।
लेकिन तब से मेरे पास 255 आइटम होंगे और इस वर्ग को अक्सर प्रयोग किया जाता है, मुझे लगता है कि हर बार जब मुझे पात्र मिलना है तो कंटेनर को लूप करना होगा, जो फिर से एक मुद्दा है।
एक वेक्टर या एक निश्चित लम्बाई सरणी, जिसका लम्बाई 256 है, आपको लूप की आवश्यकता नहीं होगी ... इसके बजाय आप सीधे इंडेक्स कर सकते हैं, उदाहरण के लिए:
const char * translations [256] = {"a", "मधुमक्खी", "सी!", ... आदि ... ...; Const char * translate (char c) {// सरणी int index = c में सूचकांक के रूप में वर्ण का उपयोग करें; // अनुवाद सरणी का प्रयोग करें (अनुक्रमण का उपयोग करके, पाशन नहीं) const * परिणाम = अनुवाद [अनुक्रमणिका]; वापसी परिणाम; }
Comments
Post a Comment