जब मैं चाहता हूँ एक समारोह मुझे एक कंटेनर वापस जाने के लिएवापसी मूल्य अनुकूलन: हो सकता है कि मैं विशाल एसटीएल कंटेनर की प्रति निर्माण से बच सकूं।</p> <pre><code>vector<T> func(){ vector<T> result; ... return result; } </code></pre> <p>निम्नलिखित तरीके से इस्तेमाल किया जा करने के लिए::
vector<T> result = func();
आदेश मेरा कंटेनर को कॉपी करने की भूमि के ऊपर मैं अक्सर लिखने से बचने के लिए फ़ंक्शन ताकि यह कुछ भी नहीं लौटाए लेकिन कंटेनर के गैर-कॉन्स उदाहरण को स्वीकार करें।
void func(vector<T>& result){
result.clear();
...
result;
}
निम्नलिखित तरीके से इस्तेमाल किया जा करने के लिए:
vector<T> result;
func(result);
क्योंकि मुझे यकीन है कि संकलक हमेशा वापसी मान अनुकूलन का उपयोग करता है हो सकता है मेरी प्रयास व्यर्थ है?
चूंकि सी ++ 11 आपका प्रयास व्यर्थ है, जब तक सी ++ 11 सही तरीका नहीं है। – 101010
आपको सी ++ 03 में भी अपना पहला कोड उदाहरण उपयोग करना चाहिए। – Simple
आप मानते हैं कि आरवीओ लागू होने पर, दूसरी तरफ उतना ही कुशल होगा। यह हमेशा की घटना नहीं है। –