C++ベクタのC#に相当するものは何ですか?C#のベクトルに相当する、連続したメモリを持つベクトル?
私はこの機能を探しています:
標準配列対のアクセスのためのパフォーマンスの低下を持っていない連続して格納されたメモリの動的配列を持つために。
ので、私が探していた、彼らは.NET equivalent to the vector in C++ is the ArrayList
を言う:
ドゥArrayListには、その連続したメモリ機能を持っていますか?
C++ベクタのC#に相当するものは何ですか?C#のベクトルに相当する、連続したメモリを持つベクトル?
私はこの機能を探しています:
標準配列対のアクセスのためのパフォーマンスの低下を持っていない連続して格納されたメモリの動的配列を持つために。
ので、私が探していた、彼らは.NET equivalent to the vector in C++ is the ArrayList
を言う:
ドゥArrayListには、その連続したメモリ機能を持っていますか?
を使用できます。T
が値タイプの場合、T
が参照タイプの場合には当てはまらない連続したメモリに割り当てられます。
例:
List<int> integers = new List<int>();
integers.Add(1);
integers.Add(4);
integers.Add(7);
int someElement = integers[1];
使用List<T>
。内部的には配列を使用し、配列は連続したメモリを使用します。
+1。なぜ人々は 'ArrayList'について言及することを主張しているのですか? –
完全に真実ではありません。 Tが参照型の場合、連続したメモリは存在しません。 –
@Matteoもしあなたがソースを見るならば、 'private T [] _items; 'があります。これはバックエンドの格納、参照の型に使われているかどうかです。 –
C#には多くの参照型があります。でも参照が連続して、オブジェクト自体がヒープすべての
まず点在することができるコンテナ店舗場合、Arraylist
またはHashtable
から離れて。これらのクラスは、ジェネリックスを支持して廃止予定とみなされます。彼らはまだ伝統的な目的のための言語になっています。
あなたが探しているのは、List<T>
クラスです。 Tが値型の場合、明示的な理由からTが参照型ではない場合、連続したメモリを持つことに注意してください。
まもなく、CLR/C#がVector <のサポートを強化しているようです。
あなたが指定した(あるいは一貫期待)するための構造がメモリに割り当てられているか、金属に十分に近いCLRはありませんか? – Aphex