Nie, PHP nie ma ścisły odpowiednik std::vector
.
Po prostu użyć nasz multi-purpose arrays lub jeden z additional datastructures in SPL, mianowicie SplFixedArray
, ArrayObject
a niektóre Heaps i Stacks, ale żaden z nich są rzeczywiście równoważne.
Najbliżej co mogę myśleć, aby zaoszczędzić pamięć jest PECL extension for Judy Arrays:
PHP Judy realizuje rozrzedzone tablice dynamiczne (aka Judy podgrupach). To rozszerzenie jest oparte na bibliotece Judy C. Tablica Judy pobiera pamięć tylko wtedy, gdy jest zapełniona, ale może rosnąć, aby w razie potrzeby wykorzystać całą dostępną pamięć. Najważniejsze zalety Judy to skalowalność, wysoka wydajność i wydajność pamięci.
obsługuje następujące tryby:
BITSET
- Definiowanie Array Judy jako Bitset z kluczy jako całkowitą i wartości jako Boolean
INT_TO_INT
- Definiowanie Array Judy z klucz/wartości jako Integer i Integer only.
INT_TO_MIXED
- Definiuj Judy Array za pomocą kluczy jako Integer i Wartości dowolnego typu.
STRING_TO_INT
- Zdefiniuj tablicę Judy z kluczami jako ciągiem i wartościami całkowitymi i całkowitymi.
STRING_TO_MIXED
- Zdefiniuj Judy Array za pomocą kluczy jako łańcucha i wartości dowolnego typu.
Prawdopodobnie chcesz INT_TO_MIXED
. Tak jak powiedziałem, to jest najbliższe, o czym mogę pomyśleć. To nie to samo. Nigdy wcześniej go nie używałam, więc nie mogę powiedzieć, czy spełnia twoje wymagania pod względem wydajności.
Można przeglądać źródłowego na http://lxr.php.net/xref/PECL/Judy/
Od [dokumentacja] (http://php.net/manual/language.types.array.php): ** [PHP są tablice] zoptymalizowane dla kilku różnych używa; może być traktowany jako tablica, lista (wektor), tablica asocjacyjna (implementacja mapy), słownik, kolekcja, stos, kolejka i prawdopodobnie więcej. ** Co próbujesz zrobić, szczególnie, gdy tablice powodują masz kłopoty? –
W szczególności, PHP "array" jest zaimplementowana jako jednocześnie lista hashtable i podwójnie związana. Chociaż oznacza to, że operacje wstawiania i usuwania niosą niewielki dodatkowy koszt w celu utrzymania różnych wskaźników, pobieranie wszelkiego rodzaju jest dość mocno zoptymalizowane. – IMSoP
@IMSoP Więc nie tylko macierzyste tablice PHP są nieefektywne pod względem czasu, ale także pod względem pamięci? –