Những ưu / nhược điểm khi sử dụng auto
từ khóa, đặc biệt là trong các vòng lặp là gì?
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->??
}
Có vẻ như nếu bạn không biết liệu bạn có một iterator cho một bản đồ hoặc một vector bạn sẽ không biết liệu có nên sử dụng first
hay second
hay chỉ trực tiếp các thuộc tính truy cập của đối tượng, đúng không?
Điều này nhắc nhở tôi về cuộc tranh luận về C # về việc có nên sử dụng từ khóa hay không var
. Ấn tượng tôi nhận được cho đến nay là trong thế giới C ++, mọi người sẵn sàng chấp nhận auto
từ khóa với ít cuộc chiến hơn var
trong thế giới C #. Đối với tôi, bản năng đầu tiên của tôi là tôi muốn biết loại biến để tôi có thể biết những thao tác nào tôi có thể mong đợi để thực hiện trên nó.
for (auto& it : x)
(hoặc không có tài liệu tham khảo nếu bạn muốn sao chép)
x
và thậm chí bạn không biết đó x
là gì , bạn không nên viết vòng lặp đó ở vị trí đầu tiên ;-)
var
? Tôi bỏ lỡ điều đó.