Matti Maekitalo: array_slice mit grossen Arrays

Beitrag lesen

Tach auch.

Das ist bekannt, und meiner Ansicht nach auch logisch.

Sehe ich nicht so.
Ein array_slice für ein Element kann bei einer doppelt verketteten Liste durchaus in O(1) implementiert werden (es müssen ja nur die Zeiger beim Vorgänger- und Nachfolge-Element umgebogen werden, das Suchen des richtigen Elements meinetwegen noch in O(n) dazurechnen, wenn man keine Iteratoren nutzt).

Siehe z.B. C++ STL:
"Fill insert, range insert, and range erase are linear.
The complexities of single-element insert and erase are sequence dependent. "

gültig etwa für einen std::vector, was ja mit einem PHP-Array mit Zahlen als Indizes vergleichbar ist.

Wenn du aus einem Array 1..1000 das 1. Element mit slice rausschneidest, müssen alle nachfolgenden Indices umgeschrieben werden.

Wenn man die Verknüpfung Array-Index => Element fest speichert, ist das korrekt.
Dies ist etwa der Fall für einen assoziativen Array (in perl wäre es der Hash).

Nur: wenn man nicht vorhat, nicht-zahlenbasierte Array-Indizes zu verwenden, ist eine feste Speicherung gar nicht notwendig. Den []-operator kann man auch ohne feste Verknüpfung implementierbar.

Bis die Tage,
Matti