tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: ジャグ配列でRedim Preserve みたいな使い方をしたいのです
投稿日: 2017/08/31(Thu) 15:58
投稿者Hongliang
単純に、
Yak(N1) = Temp
だけでもいいんじゃないかと思いますけど。

Tempは、約数の探索時には、動的に要素が追加されていくという性質を持っていますよね。
こういう場合、配列を追加のたびにReDim Preserveしていくのではなく、
配列の代わりにList(Of Integer)を使います。
そうすれば、追加時にAddしていくだけで済みます。

For N1 As Integer = 2 To 10            '2〜10の配列をジャグ配列に格納する
    Dim Temp As New List(Of Integer) ' 変数はメソッド先頭で全部宣言するより必要なところで宣言したほうが見やすい
    For N2 As Integer = 1 To N1 / 2
        If N1 Mod N2 = 0 Then
            Temp.Add(N2)
        End If
    Next
    ReDim Preserve Yak(N1) ' Yakの要素数を確保
    Yak(N1) = Temp.ToArray() ' 最終的に配列にするにはToArrayメソッド
Next

また、Yakも、毎回ReDim Preserveするのは非効率です。
上限が10と決まっているのであれば初めにDimする際に
Dim overLimit = 10 ' 実際にはメソッド引数とかで渡されるとか?
Dim Yak(overLimit)()
のようにすればいちいちReDim Preserveする必要はなくなります。
// 個人的には、ジャグ配列ではなく、Dictionary(Of Integer, Integer())を使いたいところですが。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。