การอ่านตัวอย่างของลูปแบบช่วงพวกเขาแนะนำสองวิธีหลัก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
เทียบเท่ากับทางเลือกที่สามของคุณ