2010-11-20 08:01:01

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
}

}



コメント

[コメントをする]

コメント投稿

一緒にプレゼントも贈ろう!

Amebaおすすめキーワード

    アメーバID登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト