2010-08-09 28 views
11

Iterating về phía trước thông qua một bộ đệm tròn mà không sử dụng một điều kiện rất dễ dàng với các nhà điều hành còn lại ...Làm thế nào để bạn lặp lại qua bộ đệm tròn mà không có điều kiện?

iterator = (iterator + 1) % buffer_size;

tôi có thể không cho cuộc sống của tôi ra quá trình ngược lại, lặp lại lạc hậu.

+1

nó không đơn giản, 'buffer_size - (iterator + 1)% buffer_size - 1'? – Anycorn

Trả lời

14

iterator = (iterator + buffer_size - 1) % buffer_size có phù hợp với bạn không? Đi một ít hơn tất cả các cách xung quanh.

0

Câu trả lời của Borealid hoạt động. (lưu ý: iterator được đặt thành 0 ban đầu).

giải pháp khác là

iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size với iterator thiết lập để buffer_size ban đầu.

Các vấn đề liên quan