मैं कुछ गणित की कक्षाओं (मैट्रिक्स, वेक्टर, आदि) एक दोस्त ने उल्लेख किया है कि std::complex
के लिए ostream
ऑपरेटर की जीसीसी मानक पुस्तकालय कार्यान्वयन के आंतरिक उपयोग भी शामिल है के लिए ostream
ऑपरेटरों प्रदान करने में देख रहा हूँ एक स्ट्रिंग धारा यह वास्तविक ostream
को पार करने से पहले उत्पादन फ़ॉर्मेट करने के लिए:उपयोग
/// Insertion operator for complex values.
template<typename _Tp, typename _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
{
basic_ostringstream<_CharT, _Traits> __s;
__s.flags(__os.flags());
__s.imbue(__os.getloc());
__s.precision(__os.precision());
__s << '(' << __x.real() << ',' << __x.imag() << ')';
return __os << __s.str();
}
यह पैटर्न के रूप में अच्छी तरह से बढ़ावा में दिख रहा है। हम यह निर्धारित करने की कोशिश कर रहे हैं कि यह एक पैटर्न है जो निम्नलिखित है। इस बात की चिंता है कि इसमें स्ट्रिंग स्ट्रीम के लिए अतिरिक्त शीर्षलेख शामिल है और स्ट्रिंग स्ट्रीम के भीतर आवश्यक अतिरिक्त ढेर आवंटन हैं जो संभावित रूप से टाल जा सकते हैं।
सबसे उचित बात यह सुझाव दिया गया है कि यदि क्लाइंट को उस कार्यक्षमता की आवश्यकता है, तो वे स्ट्रिंग स्ट्रीम बना सकते हैं और प्री-पास स्वयं कर सकते हैं।
क्या कोई मुझे समझने में मदद कर सकता है कि इसे अच्छा अभ्यास क्यों माना जाएगा और क्या मुझे इसे अपनाना चाहिए?