संभव डुप्लिकेट:
how to “return an object” in C++सी ++ वेक्टर, वापसी बनाम पैरामीटर
अगर वहाँ तीन निम्नलिखित दृष्टिकोणों के बीच एक अंतर है मैं सोच रहा हूँ:
void FillVector_1(vector<int>& v) {
v.push_back(1); // lots of push_backs!
}
vector<int> FillVector_2() {
vector<int> v;
v.push_back(1); // lots of push_backs!
return v;
}
vector<int> FillVector_3() {
int tab[SZ] = { 1, 2, 3, /*...*/ };
return vector<int>(tab, tab + SZ);
}
प्रदर्शन में? – Anycorn
बस मूल्य से वापस आएं और प्रदर्शन के बारे में चिंता करें जब आपको लगता है कि यह वास्तव में एक समस्या है। फिर इसे प्रोफाइल करें ताकि आपको अनुमान लगाने की आवश्यकता न हो। मैं [डुप्लिकेट] के रूप में बंद कर रहा हूं (http://stackoverflow.com/questions/3350385/how-to-return-an-object-in-c)। – GManNickG
मैंने इसे दो कारणों से डुप्लिकेट के रूप में बंद करने के लिए वोट नहीं दिया होगा: (1) पहले के प्रश्न में गतिशील स्मृति आवंटन के बारे में विशिष्ट जानकारी थी जो इस प्रश्न पर लागू नहीं होती है, और (2) यह प्रश्न एसटीएल-विशिष्ट है जो कर सकता है डालने वाले इटरेटर जैसे अन्य मुहावरे का आह्वान करें। साथ ही, एसटीएल के कुछ कार्यान्वयन पहले ही प्रतिलिपि को कम करने के लिए सी ++ 0x आर-मान संदर्भों का लाभ उठाते हैं। वह विधि पहले के प्रश्न में लागू नहीं होती है। –