2011-01-19 5 views
0

私はC++のようなコンテナが必要です。多くの場合Listを使用することが推奨されていますが、push_back操作はサポートされていません。これはListコンテナの拡張メソッドを実装するのはむしろ簡単なことです。しかし。スタックは良い選択肢でしょうか?c#コンテナのpush_back操作

ありがとうございます!

+0

なぜあなたの目的に合ったリストのメソッドを追加できませんか? ベクトルはFIFOですが、スタックはfiloです。彼らは全く別物です – T33C

答えて

15

List<T>.Addをサポートしています。あなたが探しているものではありませんか?

+1

+1:はい、 'push_back'は' List .Add() 'と正確に一致します – digEmAll

+0

ありがとう!私はそれがpush_frontに相当すると思ったので – lexeme

1

メモリの割り当て方法を制御できないため、C#でvectorに直接相当することはありません。 std::vectorは常に連続したブロックにそのメモリを持ちます。そう、必要であれば、あなたはそうのようにアクセスできます。

std::vector<int> v; 
// add items to v 
CallSomeCFunction(&v[0]); 

C#があなたにメモリが割り当てられる方法に対する制御を与えないので、ベクトル/アレイとリストの区別は存在しないです。あなたはあなたが望むものであるListコンテナを使用することができます。

+0

実際、ArrayList <>は連続したメモリに格納されていると思います。 – ronag

+0

http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx - これまでの文書でもそのことを知りませんでした。 GCの仕組みによって、実施することはほとんど不可能です。 –