ข้อดี / ข้อเสียของการใช้autoคำหลักโดยเฉพาะในลูปคืออะไร
for(std::vector<T>::iterator it = x.begin(); it != x.end(); it++ )
{
it->something();
}
for(std::map<T>::iterator it = x.begin(); it != x.end(); it++ )
{
it->second->something();
}
for(auto it = x.begin(); it != x.end(); it++ )
{
it->??
}
ดูเหมือนว่าถ้าคุณไม่รู้ว่าคุณมีตัววนซ้ำสำหรับแผนที่หรือเวกเตอร์คุณจะไม่รู้ว่าจะใช้หรือไม่ firstหรือsecondเข้าถึงคุณสมบัติของวัตถุโดยตรงหรือไม่?
สิ่งนี้ทำให้ฉันนึกถึงการโต้วาที C # ว่าจะใช้คำหลักvarหรือไม่ ความประทับใจที่ฉันได้รับจนถึงขณะนี้คือในโลกคน C ++ พร้อมที่จะใช้autoคำหลักที่มีการต่อสู้น้อยกว่าvarในโลก C # สำหรับฉันสัญชาตญาณแรกของฉันคือฉันชอบที่จะรู้ชนิดของตัวแปรเพื่อที่ฉันจะได้รู้ว่าการดำเนินการใดที่ฉันคาดหวังว่าจะสามารถทำได้
for (auto& it : x)(หรือไม่มีการอ้างอิงหากคุณต้องการคัดลอก)
xและคุณไม่ได้รู้ว่าสิ่งxคือคุณไม่ควรเขียนห่วงว่าในสถานที่แรก ;-)
varหรือไม่? ฉันคิดถึงสิ่งนั้น