कोड नीचे चला जाता है:वेक्टर <T> :: स्वैप और अस्थायी वस्तु
#include <vector>
int main()
{
vector<int> v1(5,1);
v1.swap(vector<int>()); //try to swap v1 with a temporary vector object
}
कोड ऊपर संकलन नहीं कर सकता, त्रुटि:
error: no matching function for call to ‘std::vector<int, std::allocator<int> >::swap(std::vector<int, std::allocator<int> >)’
लेकिन, अगर मैं कुछ इस तरह के कोड बदलने के लिए, यह संकलित कर सकते हैं:
int main()
{
vector<int> v1(5,1);
vector<int>().swap(v1);
}
क्यों?
क्या आप "वेक्टर() 'पर एक अधिक जानकारी प्रदान कर सकते हैं"? 'rvalue'' = 'के दाईं ओर दिखाई देना चाहिए, है ना? –
Alcott
@ एल्कॉट: यह उससे अधिक सामान्य है। Http://en.wikipedia.org/wiki/Value_(computer_science देखें)। –
मुझे यह आलेख रैल्यू को समझने में बहुत उपयोगी पाया गया: http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html – Adam