C#:動的2次元配列(行固定長*列可変長)
テーマ:C#VC#を使うようになって2か月・・・。
winの画像処理アプリケーションを開発してきた。
C++の基礎知識のみで実装をごり押しでいつの間にかソース1700行突破(^O^)/。
オブジェクト指向ってなんですかああああれあれあれぇぇぇぇぇ(^O^)/。
WINAPI関連ばっかりで言語関係なく面倒だったけど、
文字列演算とかファイル操作のスキームは変わらない。
研究室にC#使いがいないため、というか大学にC#とかいう微妙言語使う奴いないために、
バグ等は全てgoogleに聞いてきた。
しかし始めてC++で出来ていた実装法がC#で分からず3日間つまずいた。
(2日間はゲームしてましたがね・・・。)
それが動的可変列長2次元配列の実装
可変列長2次元配列=いわゆるジャグ配列ならば
jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
これだと1度初期化すると列要素の追加ができなくなる。論外。
半日ググり続けた結果
C#ではどうしてもサンプルがない。
教えてgooに投稿しつつググり
javaのサンプルにヒット
C#に書き変え成功。
・・・あれなんかこれってすごい簡単なんじゃないですか?(^O^)/。
ArrayList[] array=new ArrayList[SIZE];
array[0]=new ArrayList();
・・・てかこう書くって気付かないってどんだけ適当にC#やってきたんだwww
この挫折のおかげでしたくもないC#の勉強ができた。
c++の<vector>=c#でArrayListってことでOKぽい。
これを動的階層型キューに使う。
要素をqueue();にすれば更に使いやすそう。
using System.Linq;
using System.Text;
using System;
using System.Collections;
/**行固定長*列可変長である2次元配列の動的確保**/
public class SamplesArrayList
{
public static void Main()
{
ArrayList[] array=new ArrayList[1];
array[0]=new ArrayList();
array[0].Add("AA");
array[0].Add("BB");
array[0].Add("CC");
for(int i=0;i<array[0].Count;i++){
String str=(String)array[0][i];
Console.Write(str);
}
//出力 AABBCC
Console.WriteLine();
array[0].Add("DD");//
for (int i = 0; i < array[0].Count; i++)
{
String str = (String)array[0][i];
Console.Write(str);
}
//出力 AABBCCDD
}
}