Bạn đã bao giờ trải qua quá trình thay thế BOOST_FOREACH
bằng vòng lặp for
dựa trên phạm vi không? Có bất kỳ gotchas nào khi thực hiện nó máy móc (tức là không thực hiện nghiên cứu sâu về mã xung quanh).Bất kỳ trải nghiệm nào có thay thế BOOST_FOREACH theo phạm vi dựa trên vòng lặp từ C++ 11?
Thông tin cơ bản: Tôi có nguồn với khoảng 250K dòng, được biên soạn với Microsoft VC++ 10 (Visual Studio 2010). Mã này cũng sử dụng BOOST_FOREACH từ thư viện tăng cường. Tôi chỉ đang cố gắng VC++ 11 (Visual Studio 2012 RC) mà thực hiện cũng là phạm vi dựa trên for
vòng lặp với auto
.
Cho đến nay, tôi đã gặp những tình huống mà các phần tử được khai báo bên ngoài BOOST_FOREACH
(không kê khai trong dấu ngoặc đơn):
BOOST_FOREACH (element, container) {
...
}
... và element
được dự kiến sẽ có giá trị thiết lập trong lặp lại sau break
. Bạn có thể nhớ các sự cố tương tự không?
Khi số BOOST_FOREACH
chứa tuyên bố, bạn có chọn thay thế loại khiêu dâm bằng auto
không? Có lợi thế nào để làm như vậy khi người ta chỉ viết lại máy BOOST_FOREACH
thay vì để lại tuyên bố rõ ràng ở đó?
Nhờ sự giúp đỡ của bạn, Petr
Vâng, tôi hiểu rằng 'tự động' là người chiến thắng khi một mã mới được nhập - như viết của bạn. Tuy nhiên, tôi cảm thấy an toàn hơn một chút khi loại bỏ loại rõ ràng không được thay thế bằng 'tự động'.Thứ nhất, nó sẽ mất nhiều công sức hơn, và thứ hai, tôi có thể giới thiệu một lỗi của con người khi chỉnh sửa. (Có rất nhiều 'BOOST_FOREACH', và tôi không thể xem xét mã xung quanh cho từng trường hợp.) Dù sao, bạn sẽ xem xét quyết định của tôi để giữ kiểu dữ liệu rõ ràng trong các vòng lặp' for' mới như không- có vấn đề? – pepr
@pepr Tôi đồng ý rằng việc giữ loại rõ ràng thường sẽ là lựa chọn tốt nhất; bạn sẽ cần phải biết về nó nếu thay đổi loại vùng chứa sau này. – ecatmur