Хорошо ли оставлять одну пустую в массиве реализацию циклической очереди?

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

0
задан Charles1031 27 June 2019 в 00:04
поделиться

1 ответ

Две причины.

Первый, если тот один объект имеет значение, то Ваша очередь всегда полна. Это, вероятно, должно быть больше. Кроме того, если Ваша очередь даже умеренно измерена скажем 1 000 объектов, один объект представляет 0,1% Вашей очереди. Не, что я назвал бы особенно относительно траты памяти.

, Что еще более важно, если Вы не оставляете дополнительный объект, тогда реализация становится чем-то вроде проблемы. Если Вы имеете head и tail индексы, то что означает когда head == tail? Это означает, что очередь полна, или что это пусто? Без большей информации невозможно сказать.

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

, Таким образом, Вы хотите потратить впустую циклы процессора на каждую работу с очередями? Или Вы "потратили бы впустую" тривиальный объем памяти для создания кода более простым?

0
ответ дан Jim Mischel 27 June 2019 в 00:04
поделиться
  • 1
    Chris, когда там isn' t соответствие, 1$ будет содержать тестовое имя origintal, включая *, как Вы говорите. Тогда тест: [-f " 1$ "] won' t быть sucessfull, потому что файл " *" doesn' t существуют. Поэтому Вы don' t нужен nullglob или другие приемы. Это - 100%-е портативное устройство. – joseyluis 16 May 2018 в 09:59
Другие вопросы по тегам:

Похожие вопросы: