いいえ、PHPはstd::vector
に厳密に等価ではありません。
私達はちょうど私たちのmulti-purpose arraysまたはadditional datastructures in SPLの1、すなわちSplFixedArray
、ArrayObject
といくつかのHeapsとStacksを使用していますが、それらのどれも実際には等価ではありません。
私はメモリを節約するための考えることができる最も近いものはPECL extension for Judy Arraysです:
PHPジュディはまばらな動的な配列(別名ジュディ・アレイ)を実装しています。この拡張はJudy Cライブラリに基づいています。 Judy配列は、データが移入されたときにのみメモリを消費しますが、必要に応じて使用可能なすべてのメモリを利用できるようになります。 Judyの主なメリットは、スケーラビリティ、高性能、メモリ効率です。
それは次のモードをサポートしています。
BITSET
- ブール
INT_TO_INT
としてIntegerなどのキーと値を持つビットセットとしてジュディの配列を定義する - などのキー/値でジュディの配列を定義整数、および整数のみです。
INT_TO_MIXED
- Integerと任意のタイプの値としてキーを使用してJudy Arrayを定義します。
STRING_TO_INT
- キーを文字列として、値を整数として、整数のみでJudy Arrayを定義します。
STRING_TO_MIXED
- キーを文字列として使用し、任意の型の値を持つJudy配列を定義します。
おそらくINT_TO_MIXED
が必要です。私が言ったように、それは私が考えることができる最も近いものです。それは同じではありません。これまで私はそれを使ったことがないので、効率性の面で要件を満たしているかどうかはわかりません。
あなたは[ドキュメント](http://php.net/manual/language.types.array.php)からhttp://lxr.php.net/xref/PECL/Judy/
でソースコードを閲覧することができます:** [PHP配列がされている]いくつかの異なる向けに最適化使用;配列、リスト(ベクトル)、ハッシュテーブル(マップの実装)、辞書、コレクション、スタック、キューなどとして扱うことができます。**具体的には、配列が原因で何をしようとしていますか?あなたは困った? –
特に、PHPの「配列」は、ハッシュテーブルと二重リンクリストとして同時に実装されています。これは、挿入と削除の操作がさまざまなポインタを維持するために少し余分なオーバーヘッドを抱えていることを意味しますが、すべての種類の取得は非常に高度に最適化されています。 – IMSoP
@IMSoP PHPのネイティブ配列だけでなく、時間的にもメモリの面でも効率的ではありませんか? –