- ベストアンサー
MFCのCArrayを使った二次元配列
CSVファイルの内容をCArrayを使って二次元配列に 格納する処理を作っています。 CSVファイルの内容は A1,B1,C1 A2,B2,C2,D2 A3,B3 : のように、縦横のレコード数が決まっていません。 なので、CArrayのAddで動的に配列を拡張できたら 楽だと思い挑戦しているのですが、分かりません。 また、CArrayで作られた配列はdeleteしなくては いけないのですか? どなたかご教授お願いします。
- syuuzityan
- お礼率8% (16/195)
- C・C++・C#
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
訂正 //メンバ Private: CArray mArray; void MyArray::Add(CArray oArray) //Array追加 { //引数がちょっとわからないがようするにCArrayにCArrayをいれる mArray.Add(oArray); } CArray MyArray::GetAt(int i) //i番目のArrayを取得 { //エラー対策とかしてね return mArray.GetAt(i); }
その他の回答 (1)
- 5S6
- ベストアンサー率29% (675/2291)
VSとMSDNが今手元にないのであまり自信ないけど自分でClass作ったら? //メンバ Private: CArray oArray; void MyArray::Add(CArray oArray) { //引数がちょっとわからないがようするにCArrayにCArrayをいれる oArray.Add(mArray); } CArray MyArray::GetAt(int i) { //エラー対策とかしてね return oArray.GetAt(i); } こんなふうに自分でクラス作れば多次元だろうと、可変サイズだろうと できますよ。あとは自分で便利なようにつくってください。 deleteはNewで作らない限り大丈夫じゃなかったかな。 逆に消そうとするとエラーになるような。 MSDN見てください。MSサイトにあるけどVSが今ないから確認できないです。
関連するQ&A
- C# 配列の配列(多次元配列?)
C#において、配列の配列中に格納した値を、検索することを 行いたいのですが、格納した値そのものを見ることができません。 まだ、C#を始めて間もないので、配列に格納する時点で、 不備があるかも知れませんが、お願いします。 やりたいこと ・テキストファイル内にある値を、2次元配列または、多次元配列に格納 ・配列に格納した値で、データチェックなどを行う予定 テキストファイル内のデータは、下記内容となり要素数も固定ではなく変動する A=1,2,3・・・ B=11,22,33・・・ 実際のソースは、 //配列 ArrayList list = new ArrayList(); //配列格納 1レコード毎用 ArrayList listtmp = new ArrayList(); while ((strGenderTextLine = objReader.ReadLine()) != null) { string strBuffer; //「=」前の値格納用変数 string[] strBuffer2; //「=」後の値格納用配列 listtmp=null; //strtmpに「=」前の値を格納 strtmp = TextLine.Split('=').GetValue(0).ToString(); //strtmp2に「=」後の値を格納(配列) strtmp2 = TextLine.Split('=').GetValue(1).ToString().Split(','); for (int i = 0; i <= strtmp2.Length - 1; i ++) { //[i,0]に、「=」前の値を代入 if (i == 0) { listtmp.Add(strtmp); } else { listtmp.Add(strtmp2[i].ToString()); } } //list配列にlistTmp配列を格納(配列の配列) list.Add(listtmp); intT = intT + strtmp2.Length; //行数カウント intTLine = intTLine + 1; } ここから、配列「list」内に入っている値を閲覧することができる方法を教えていただければと思います。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- 2次元の配列にデータを格納したい
hoge.txtの様なファイルがあって、この値を2次元の配列に格納したいのですが、簡単に実現することは可能でしょうか? open (FILE, "hoge.txt"); foreach (<FILE>) { # この中で、2次元の配列に格納したい } hoge.txt A 1 B 2 C 3
- ベストアンサー
- Perl
- 2次元配列の使い方
Access 2013 vba メイン画面に、2つのサブフォーム(共に帳票)があり 親→子→孫 となっています。 この時、親、子、孫のレコードを取得して ある書類を作成しエクセルに出力しようとしています。 この場合、親のデータは普通に変数Aに入れて 子のデータは一次元配列B()に入れ 孫のデータは一次元配列C(0)~C(3)に入れたものを、更に子用の一次元配列B1()~B4()に入れるように作りにしようと考えています。 この場合、 子の画面で次の2レコード目に進んだ時、子画面用のB1...B4の配列変数に入れている孫のC(0)~C(3)の配列の中身は、子画面の一レコードと二レコード目では同じものになるのでしょうか。 もし、同じものになるのであれば、この方法は使えないと思っていますが。。。 他に何か良い方法はありますでしょうか。 Accessで、クラスを作って、それを配列変数に入れるとか・・・ よろしくお願いします。
- ベストアンサー
- その他(データベース)
- 多次元配列の一次元目の最大値の求め方
多次元配列の一次元目の最大値の求め方 下記のような多次元配列(ちなみに、これって二次元配列ですか?)があるとき、 常に、「一次元目の最大値+1」を返すようにしたいのですが、 どうすればよいのでしょうか? $data[0][0]とか$data[1][0]とか$data[2][0]とかの最大値の意味です。 下記の例でいくと、一次元目の最大値が3なので、数値の4を返したいのですが…、 ■$data 1,0,A1,B1,C1 2,5,A2,B2,C2 3,0,A3,B3,C3 3,2,A4,B4,C4
- ベストアンサー
- PHP
- 二次元配列で"一列"取り出すには?
すいませんC# を勉強中なのですが、 たとえば int[,] a = new int[2,2] { {1,2}, {3,4} } という2x2の二次元配列があったとき 縦の列、つまり1と3だけ抜き取って配列に格納したい、または2と4だけを抜き取って配列に格納するにはどうすればいいでしょうか? 実際には配列に抜き取った後に hairetsu.Max(); でその列の最大値を出したいと考えています。 たくさん量があるとき、どうすれば簡単に列の配列を抜きとれるのでしょうか、ご存じの方よろしくお願いします…
- 締切済み
- C・C++・C#
- PHPで2次元配列を1次元配列にしたいのですが、わからないので教えてく
PHPで2次元配列を1次元配列にしたいのですが、わからないので教えてください。 例えば2次元配列を以下のようにします。 $ss[0][0]=a $ss[0][1]=b $ss[0][2]=c $ss[1][0]=あ $ss[2][0]=い $ss[3][0]=う これを以下のような1次元配列にしたいです。、 $ss[0][0]→$g[0],$ss[0][1]→$g[1],$ss[0][2]=$g[2] $ss[1][0]→$h[0],$ss[2][0]→$h[1],$ss[3][0]=$h[2] よろしくお願いします。
- ベストアンサー
- PHP
- Generic.Listに1次元配列の配列を格納したい(VB2005)
VB2005の質問です。 変数ghogeにString型の1次元配列の配列を格納したいと考えています。 ----------------------------------------------- 'a) Dim hoge()() As string = _ {New string() {"a1", "b1", "c1"}, _ New string() {"a2", "b2", "c2"}, _ New string() {"a3", "b3", "c3"}} Dim ghoge As New Generic.List(of ) 'b) MessageBox.Show(ghoge(1)(1)) ' "b2"と表示したい ----------------------------------------------- 質問内容は、(a)を(b)の初期値として設定するにはどのようにすればよいか、ということです。 (b)がGeneric.ListでなくArrayListの場合だと、 Dim ghoge As New ArrayList(hoge) でhoge配列を格納できますが、Generic.Listの場合はどのような構文にすればよいでしょうか。 現在は、下記のような処理でghogeに値を格納しています。 ------------------------------------------------------------ Dim ghoge As New Generic.List(Of Generic.List(Of String)) Dim aryhoge1 As New Generic.List(Of String)(New String() {"a1", "b1", "c1"}) Dim aryhoge2 As New Generic.List(Of String)(New String() {"a2", "b2", "c2"}) gary_hoge.Add(ary_hoge1) gary_hoge.Add(ary_hoge2) MessageBox.Show(gary_hoge(1)(1)) ' "b2"と表示される ------------------------------------------------------------ どうぞよろしくお願い致します。
- ベストアンサー
- Visual Basic
- 多次元配列を、1次元の配列にする関数を書いてください。
以下のように、多次元配列の配列をペチャンコにする関数(array_flatten)ってどうかきますか? <?php $arr[0] = 'a'; $arr[1][0] = 'b'; $arr[1][1][0] = 'c'; $arr[1][1][1][0] = 'd'; $arr[1][1][1][1][0] = 'e'; $arr[1][1][1][2] = 'f'; $arr[1][1][2] = 'g'; $arr[1][2] = 'h'; $arr[2] = 'i'; function array_flatten($arg){ 処理; } $new_arr = array_flatten($arr); print_r($new_arr); ?> ↓ Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i ) ※関数のなかで、ペチャンコの配列を格納するための新しい配列を宣言すると、 同関数を再帰的に呼び出したら、その配列が初期化されますよね?
- ベストアンサー
- PHP
- csvファイルを2次元配列に格納
Javaの勉強をしています。 csvファイルを読み込んで2次元配列に格納する方法を教えて下さい。 1次元の配列なら下記のようにして出来たのですが、2次元の配列に格納する方法が分かりません。 ------------------------------ try { File csv = new File("xxx.csv"); BufferedReader brf = new BufferedReader(new FileReader(csv)); while(brf.ready()) { String line = brf.readLine(); String[] data = line.split(","); for(int j=0; j<data.length; j++) { System.out.print(data[j] + "\t"); } System.out.println(); } brf.close(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } --------------------------- 一度はできないのかと思い、上記の1次元配列のdata[j]を2次元配列のarray[i][j]に代入してみたのですが出来ませんでした。 回答宜しくお願い致します。
- ベストアンサー
- Java
- PHPで配列の検索方法
PHPで下のような2次元配列があったとします。(りんご=a、みかん=bのような意味です。CSVからデータを2次元配列に格納したものです。) $data[0][0]="りんご" , $data[0][1]="a" $data[1][0]="みかん" , $data[1][1]="b" $data[2][0]="ばなな" , $data[2][1]="c" $data[3][0]="ぶどう" , $data[3][1]="d" ここで下のような1次元配列$hogeがあったとき $hoge[0]="ばなな" , $hoge[1]="りんご" 新たに1次元配列$hogehogeを用意して、2次元配列の中から"りんご"や"ばなな"に対応する文字列を探し出して $hogehoge[0]="c" , $hogehoge[1]="a" と、格納したいのですが、やり方がわかりません。 イメージとしまして、 $hoge[0]→($data[0][0]~$data[3][0]の中から探す)→($data[2][0]であるとわかる)→($data[2][0]に対応するのは$data[2][1]だとわかる)→($hogehoge[0]=cと格納) もし分かる方がおられましたらお願いします。
- ベストアンサー
- PHP
お礼
なるほど。 ありがとうございました。 助かりました。