मुझे अभी पता चला है कि विजुअल स्टूडियो सी ++ 2010 में, basic_string::append (iter, iter)
, जाहिर है, std::copy
का उपयोग करके लागू नहीं किया गया है।बुनियादी_स्ट्रिंग क्यों नहीं है :: संलग्न (iter, iter) कॉल std :: copy?
पहला सवाल:
अब मैं अपने खुद के इटरेटर प्रकार लागू, एक साथ आदेश और अधिक कुशल ब्लॉक के लिहाज से नकल प्रदान करने के लिए मेरी इटरेटर प्रकार के लिए std::copy
की एक अनुकूलित अधिक भार के साथ लगता है। append
ओवरलोडिंग के अलावा, इस अनुकूलन का उपयोग करने के लिए basic_string::append
प्राप्त करने का कोई तरीका है?
क्या कोई मौका है कि basic_string::append (iter, iter)
चरित्र-प्रतिलिपि प्रतिलिपि नहीं करता है?
दूसरा सवाल (मेरे अपने कार्यान्वयन के लिए एक प्रारंभिक बिंदु के रूप में):
वैध होने की गारंटी पीछा कर रहा है?
std::string t ("JohnB");
std::string s;
s.reserve (10);
std::copy (t.begin(), t.end(), s.begin());
s.push_back ('\0');
या मुझे बेहतर back_inserter
का उपयोग करना चाहिए? अगर मैं back_inserter
का उपयोग करता हूं - मैं चरित्र-प्रतिलिपि प्रतिलिपि से कैसे बच सकता हूं?
अपने दूसरे प्रश्न का उत्तर देने के लिए: 'रिजर्व()' के बाद 'प्रतिलिपि() 'निश्चित रूप से __not वैध__ नहीं है। प्रतिलिपि देखने के लिए प्रतिलिपि के बाद 's.size() 'प्रिंट करें। – Blastfurnace
@ ब्लास्टफर्नस: लेकिन 'प्रतिलिपि()' के बाद 'प्रतिलिपि() 'काम करेगा। –
'प्रतिलिपि' के बाद 'प्रतिलिपि' के बारे में क्या? – JohnB