Обратный круговой буфер - PullRequest
0 голосов
/ 27 ноября 2011

Я не очень разбираюсь в основах алгоритмического программирования, так что вот моя проблема.Я хочу создать алгоритм, который может заполнять кольцевой буфер, но он должен начинаться в конце буфера.Я пытаюсь сделать это в течение многих часов безуспешно, поэтому я прошу вашей помощи.

Я знаю оригинальный алгоритм, который начинается с начала буфера: i = (i + 1)% buffLen

Но я хочу что-то, что помещает что-то из buffLen-1 в 0, и когда оно достигает 0, оно начинается заново с buffLen-1.

Я знаю, что это можно сделать с условием, но яЯ уверен, что есть формула, чтобы сделать это быстрее и чище.

Мне нужно, чтобы он бесконечно перебирал массив объектов к концу.

Извините за мой плохой английский.

1 Ответ

3 голосов
/ 27 ноября 2011

Попробуйте

i = (i + buffLen - 1) % buffLen;

Он не будет более эффективным, чем (или даже столь же эффективным, как) конструкция if..else, но это аналог однострочного назначения для перемещения в положительном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...