C++11
से पहले मैंने गहरी प्रतिलिपि ओवरहेड्स से बचने के लिए स्वैप-टू-बैक का उपयोग किया है, जैसे:Std :: move का उपयोग करना
vector<vector<Object> > Objects;
for(/* some range */)
{
vector<Object> v;
for(/* some other range */)
{
v.push_back(/* some object */);
}
Objects.push_back(vector<Object>());
Objects.back().swap(v);
}
swap
Objects
Objects
Objects
Objects
Objects
Objects
के बजाय गहरी प्रतिलिपि ओवरहेड से बचने के लिए Objects
में Objects
को स्थानांतरित करने के लिए मैं कैसे उपयोग कर सकता हूं?
मुझे पता है कि यहां कई सारे वर्कअराउंड हैं जैसे बहु सरणी या सीधे Objects.back()
में डालना, लेकिन मुझे समझने के लिए std::move
के उपयोग की एक उदाहरण की आवश्यकता है।
क्यों आप 'v' बिल्कुल बना सकता हूँ? क्यों न केवल ऑब्जेक्ट्स में रिक्त वेक्टर जोड़ें और फिर 'ऑब्जेक्ट्सबैक()। Push_back()' इसमें? यह आसान होने के दौरान और भी ऊपर की ओर हटा देता है। – Ayjay
@Ajayay: सही उत्तर रखने और बहुत कम ध्यान देने के लिए शेष प्रश्न – Dani