मेरे पास एक वर्ग है जिसे Writer
एक फ़ंक्शन है writeVector
जैसे:
void Drawer::writeVector(vector<T> vec, bool index=true)
{
for (unsigned int i = 0; i < vec.size(); i++) {
if (index) {
cout << i << "\t";
}
cout << vec[i] << "\n";
}
}
मैं डुप्लिकेट कोड नहीं होने की कोशिश कर रहा हूं, जबकि प्रदर्शन के बारे में अभी भी चिंता है। फ़ंक्शन में, मैं if (index)
अपने हर- for
लूप पर चेक कर रहा हूं , भले ही परिणाम हमेशा समान हो। यह "प्रदर्शन के बारे में चिंता" के खिलाफ है।
मैं अपने for
लूप के बाहर चेक रखकर आसानी से इससे बच सकता था । हालाँकि, मुझे डुप्लिकेट कोड का भार मिलेगा:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
}
}
तो ये दोनों मेरे लिए "बुरे" समाधान हैं। जो मैं सोच रहा था, वह दो निजी कार्य हैं, उनमें से एक सूचकांक को बाहर करता है और फिर दूसरे को कॉल करता है। अन्य केवल मूल्य को बाहर करते हैं। हालाँकि, मैं यह पता नहीं लगा सकता कि इसे अपने कार्यक्रम के साथ कैसे उपयोग किया जाए, फिर भी मुझे यह if
देखने के लिए चेक की आवश्यकता होगी कि किसे कॉल करना है ...
समस्या के अनुसार, बहुरूपता एक सही समाधान की तरह लगता है। लेकिन मैं यह नहीं देख सकता कि मुझे यहाँ कैसे उपयोग करना चाहिए। इस तरह की समस्या को हल करने का पसंदीदा तरीका क्या होगा?
यह एक वास्तविक कार्यक्रम नहीं है, मुझे सिर्फ यह सीखने में दिलचस्पी है कि इस तरह की समस्या को कैसे हल किया जाना चाहिए।