В чем смысл PHP-класса SplDoublyLinkedList и, что более важно, связанных списков в целом?

int sdf = 1,df=2;
sdf=1 df =2

Я думаю, что общая проблема заключается в том, что без точки с запятой невозможно сказать, что на самом деле имел бы в виду программист (например, может быть, вторая строка была задана как sdf = 1 + df - 2; с серьезными опечатками). Нечто подобное может произойти из-за совершенно произвольных опечаток и иметь какое-то намеренное значение, поэтому, в конце концов, может быть плохой идеей, чтобы компилятор молча «исправлял» ошибки.

Вы также, возможно, заметили, что вы часто получаете «ожидаемую точку с запятой», где настоящая проблема не в отсутствии точки с запятой, а в чем-то совершенно ином. Представьте себе искаженное выражение, из которого компилятор может обрести смысл, просто вставив точку с запятой и вставив точку с запятой.

Точка с запятой может показаться избыточной, но для программиста это простой способ подтвердить «да, это было мое намерение».

Кроме того, предупреждения вместо ошибок компилятора слишком слабые. Люди компилируют код с отключенными предупреждениями, игнорируют предупреждения, которые они получают, и AFAIK стандарт никогда не предписывает, о чем должен предупреждать компилятор.

18
задан hakre 18 April 2013 в 15:47
поделиться

1 ответ

Структуры данных SPL снижают потребление памяти и улучшают производительность. Хорошие объяснения:

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

Например, если вам не нужны возможности хэш-карты ассоциативного массива, то есть, если вы не используете ключ массива для конкретной цели и вам нужен только перечислимый массив - SplFixedArray (ранее SplFastArray , в настоящее время без документов) может быть подходящей заменой. Единственное предостережение в том, что размер массива фиксирован, это означает, что вы должны указать размер при создании экземпляра класса, и произойдет ошибка, если вы попытаетесь сохранить больше, чем это количество элементов. Это причина того, что в среднем он работает лучше, чем стандартные массивы PHP.

http://web.archive.org/web/20130805120049/http://blueparabola.com/blog/spl-deserve-some-reiteration

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

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

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

http://matthewturland.com/2010/05/20/new-spl-features-in-php-5-3/

7
ответ дан 30 November 2019 в 09:21
поделиться
Другие вопросы по тегам:

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