रेंज आधारित छोरों के कुछ उदाहरणों को पढ़ना वे दो मुख्य तरीके 1 , 2 , 3 , 4 का सुझाव देते हैं
std::vector<MyClass> vec;
for (auto &x : vec)
{
// x is a reference to an item of vec
// We can change vec's items by changing x
}
या
for (auto x : vec)
{
// Value of x is copied from an item of vec
// We can not change vec's items by changing x
}
कुंआ।
जब हमें vec
आइटम बदलने की आवश्यकता नहीं होती है , तो IMO, उदाहरण दूसरा संस्करण (मूल्य के अनुसार) का उपयोग करने का सुझाव देते हैं। वे कुछ सुझाव क्यों नहीं देते हैं जो const
संदर्भ (कम से कम मुझे कोई प्रत्यक्ष सुझाव नहीं मिला है):
for (auto const &x : vec) // <-- see const keyword
{
// x is a reference to an const item of vec
// We can not change vec's items by changing x
}
क्या यह बेहतर नहीं है? क्या यह प्रत्येक पुनरावृत्ति में निरर्थक प्रतिलिपि से बचता नहीं है जबकि यह एक है const
?
const auto &x
आपकी तीसरी पसंद के बराबर है।