C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 配列の割り込み


(過去ログ 116 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■68297 / inTopicNo.1)  配列の割り込み
  
□投稿者/ ZZZ (1回)-(2013/10/08(Tue) 14:41:14)

分類:[VB.NET/VB2005 以降] 

VB.Net2008で配列の割り込みをしたいのですが、可能でしょうか?
もし可能なら、どうのようにすればよいのか?
教えていただけないでしょうか?

よろしくお願いします。


引用返信 編集キー/
■68298 / inTopicNo.2)  Re[1]: 配列の割り込み
□投稿者/ 魔界の仮面弁士 (366回)-(2013/10/08(Tue) 15:02:39)
No68297 (ZZZ さん) に返信
> VB.Net2008で配列の割り込みをしたいのですが、可能でしょうか?

ここでいう配列の「割り込み」というものが、たとえば、
    Dim x(3) As Integer
    x(0) = 10
    x(1) = 20
    x(2) = 30
    x(3) = 40
に対して、x(1) と x(2) の間に 25 という値を挿入して
    x(0) = 10
    x(1) = 20
    x(2) = 25
    x(3) = 30
    x(4) = 40
という形でずらしたいという意図なのだとすれば、配列にその機能はありません。


どうしても必要なら、他の配列を用意して、そこに再確保するという手があります。

    Dim y(UBound(x) + 1) As Integer     '一つ大きい配列
    Array.Copy(x, 0, y, 0, 2)   'x(0)〜x(1)をy(0)〜y(1)にコピー
    y(2) = 25                   'y(2)をセット
    Array.Copy(x, 2, y, 3, 2)   'x(2)〜x(3)をy(3)〜y(4)にコピー



もし、挿入・削除・並び替えなどを頻繁に行うのであれば、配列よりも
List(Of )クラスの方が得意なので、そちらを利用されてみてはいかがでしょうか。

    With New List(Of Integer)(x)   '配列 x を List(Of )に変換
        .Insert(2, 25)             '2番目の位置に、値25を挿入
        x = .ToArray()             '中身を配列に変換して x に書き戻す
    End With

引用返信 編集キー/
■68300 / inTopicNo.3)  Re[2]: 配列の割り込み
□投稿者/ 魔界の仮面弁士 (367回)-(2013/10/08(Tue) 15:09:32)
No68298 (魔界の仮面弁士) に追記
> に対して、x(1) と x(2) の間に 25 という値を挿入して

無理矢理 1 行で書いてみる。


Dim pos As Integer = 2 '挿入位置
Dim value As Integer = 25 '挿入する値

x = x.Take(pos).Concat(New Integer() {value}).Concat(x.Skip(pos)).ToArray()
引用返信 編集キー/
■68301 / inTopicNo.4)  Re[2]: 配列の割り込み
□投稿者/ ZZZ (2回)-(2013/10/08(Tue) 16:37:49)
No68298 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん、ありがとうございました。
無事解決しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -