"से कदम" सी ++ 11 में, हम एक दक्षता को बढ़ावा देने std::move
का उपयोग करके जब हम ले जाना चाहते हैं (विध्वंस कॉपी) प्राप्त कर सकते हैं एक कंटेनर में महत्व देता है:सी ++ कंटेनर
SomeExpensiveType x = /* ... */;
vec.push_back(std::move(x));
लेकिन मैं नहीं कर सकता दूसरी तरफ जा रहा कुछ भी ढूंढें। stack
तरह एडाप्टर के पर
SomeExpensiveType x = vec.back(); // copy!
vec.pop_back(); // argh
यह और अधिक अक्सर होता है (कॉपी पॉप): क्या मेरा मतलब है कुछ इस तरह है। इस तरह कुछ ऐसा हो सकता है:
प्रतिलिपि से बचने के लिए? और क्या यह पहले से मौजूद है? मुझे एन 3000 में ऐसा कुछ नहीं मिला।
मुझे एहसास है कि मुझे दर्दनाक रूप से कुछ याद आ रहा है (इसकी अनावश्यकता की तरह), इसलिए मैं "आरयू डम" के लिए तैयार हूं। : 3
क्या निहितार्थ कदम विधि चरों कि क्षेत्र से बाहर जाने पर है? उदाहरण के लिए, यदि मैं कोई ऑब्जेक्ट बनाता हूं, तो उसे सदस्य कंटेनर में जोड़ें, फिर ऑब्जेक्ट स्कोप से बाहर हो जाता है ... चूंकि कोई प्रतिलिपि नहीं बनाई गई थी, क्या सदस्य कंटेनर में ऑब्जेक्ट अभी भी परिभाषित है? – Polaris878
हां, इसे कंटेनर में ले जाया गया था। यदि आप सुनिश्चित नहीं हैं कि वे कैसे काम करते हैं, तो आप रावलू संदर्भों को Google करना चाहेंगे। – GManNickG
मीठा धन्यवाद ... मुझे इसे और अधिक लॉल में खोदना होगा। चेहरे की कीमत पर ऐसा लगता है कि इससे समस्याएं पैदा होंगी। – Polaris878