これまではC++を使用していましたが最近C#を勉強しています
C++とのリストと配列の操作について質問があります
C++では
0番目のvector型vect内にint型の2を加えます
これをC#で実装する場合
と現在は実装していますが、以下のように
まとめてnewすることはできませんか?
また、
といったこともしたいと考えています
もしこれらが出来ないならば、
といったリスト内リストを作成しなければならないのでしょうか?
C#でのリストの配列について
Re: C#でのリストの配列について
配列の初期化は、基本的に型指定の後ろに、
数を指定するので、クラスの配列の場合は、
という感じで、大丈夫なはずです。
が、これだと配列の要素を確保しているだけです。
各配列のListのインスタンスを、
結局生成しないと使用することができません。
List内Listを作成するのと手間自体は余り変わりは無い気がします。
余談ですが、C#の基本から学ぶなら、こちらのサイトは有用です。
http://ufcpp.net/study/csharp/index.html
数を指定するので、クラスの配列の場合は、
という感じで、大丈夫なはずです。
が、これだと配列の要素を確保しているだけです。
各配列のListのインスタンスを、
結局生成しないと使用することができません。
List内Listを作成するのと手間自体は余り変わりは無い気がします。
余談ですが、C#の基本から学ぶなら、こちらのサイトは有用です。
http://ufcpp.net/study/csharp/index.html
Re: C#でのリストの配列について
C#でのは,C++でのに,は,C++でのに相当します。
C#の参照型は,C++に書き直すとポインタになると思ってよいです (配列:System.Array含む)。
また,std::listに相当するのはSystem.Collections.Generic.LinkedListで,Listはstd::vectorに相当します。
で,インスタンス生成については,System.Linq.Enumerable.RangeとEnumerable.SelectとEnumerable.ToArrayを使って,と書くことができます。
実行時効率は配列をnewして一個一個List<int>をnewした方がよいですが……。
C#の参照型は,C++に書き直すとポインタになると思ってよいです (配列:System.Array含む)。
また,std::listに相当するのはSystem.Collections.Generic.LinkedListで,Listはstd::vectorに相当します。
で,インスタンス生成については,System.Linq.Enumerable.RangeとEnumerable.SelectとEnumerable.ToArrayを使って,と書くことができます。
実行時効率は配列をnewして一個一個List<int>をnewした方がよいですが……。
オフトピック
Range+SelectのかわりにEnumerable.Repeatを使ってしまうと,配列要素がすべて同一インスタンスになってしまい,バグの元なので注意
Re: C#でのリストの配列について
なんとなくポインタっぽいと思ってはいましたが確かに参照型なのでポインタに近いですね
LINQはC#の特徴であり便利そうなので重点的に勉強してみます
ありがとうございました
LINQはC#の特徴であり便利そうなので重点的に勉強してみます
ありがとうございました