Phạm vi C++ 11 dựa trên vòng lặp dereferences bộ lặp. Điều đó có nghĩa là nó không có ý nghĩa để sử dụng nó với boost::adaptor::indexed
? Ví dụ:Phạm vi dựa trên vòng lặp với tăng :: adapter :: được lập chỉ mục
boost::counting_range numbers(10,20);
for(auto i : numbers | indexed(0)) {
cout << "number = " i
/* << " | index = " << i.index() */ // i is an integer!
<< "\n";
}
Tôi luôn có thể sử dụng bộ đếm nhưng tôi thích các trình vòng lặp được lập chỉ mục.
- Có thể sử dụng chúng bằng cách nào đó với phạm vi dựa trên vòng lặp không?
- Thành ngữ để sử dụng các vòng dựa trên dải ô có chỉ mục là gì? (chỉ là một bộ đếm đơn giản?)
'indexed' hút vì nó thêm' index() 'phương pháp để các * iterator *, không phải là giá trị trả về từ dereferencing iterator. :/ – Xeo
@Xeo Thật vậy. Mỗi bây giờ và sau đó tôi cần chỉ số của phần tử trong phạm vi. Đầu tiên tôi cảm thấy xấu về nó. Sau đó, tôi giới thiệu một quầy. Nếu container có thể dễ dàng truy cập với một vòng lặp đơn giản cũ, tôi cảm thấy xấu một lần nữa và viết lại vòng lặp dựa trên phạm vi vào một vòng lặp cũ đơn giản. – gnzlbg
vì Xeo đề cập đến việc tăng chỉ mục không tốt cho việc này. Nếu bạn không nhớ chuyển đổi thư viện có một vài thư viện phạm vi C++ dựa trên itertools của python, chẳng hạn như: https://github.com/ryanhaining/cppitertools/ – Cechner