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

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

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

Re[8]: 配列のインデックス番号を付け替えたい 


(過去ログ 33 を表示中)

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

■16435 / inTopicNo.1)  配列のインデックス番号を付け替えたい 
  
□投稿者/ もんきっき (15回)-(2008/04/05(Sat) 19:34:02)

分類:[.NET 全般] 

質問です。

たとえばユーザーコントロールの配列

dim 文字配列() as オリジナルコントロール

文字配列(0)="ぜろ"  ←オリジナルコントロールを仮に文字で表現しています
文字配列(1)="いち" 
文字配列(2)="に"
文字配列(3)="さん"
文字配列(4)="よん"
文字配列(5)="ご"

と格納した場合、たとえば

文字配列(0)="よん"
文字配列(1)="に"
文字配列(2)="いち"
文字配列(3)="さん"
文字配列(4)="ぜろ"
文字配列(5)="ご"

のように任意の順番にインデックス番号を付け替える方法を教えていただけませんでしょうか。

ARRAYLISTを使う方法はなんとか実現できたのですが
配列、順番 等で検索しても任意の順番の並べ替えは見つかりませんでした。
基本的な質問かもしれませんがご教授御願いいたします。



引用返信 編集キー/
■16437 / inTopicNo.2)  Re[1]: 配列のインデックス番号を付け替えたい 
□投稿者/ 倉田 有大 (178回)-(2008/04/05(Sat) 20:33:40)
No16435 (もんきっき さん) に返信
> 質問です。
>
> たとえばユーザーコントロールの配列
>
> dim 文字配列() as オリジナルコントロール
>
> 文字配列(0)="ぜろ"  ←オリジナルコントロールを仮に文字で表現しています
> 文字配列(1)="いち" 
> 文字配列(2)="に"
> 文字配列(3)="さん"
> 文字配列(4)="よん"
> 文字配列(5)="ご"
>
> と格納した場合、たとえば
>
> 文字配列(0)="よん"
> 文字配列(1)="に"
> 文字配列(2)="いち"
> 文字配列(3)="さん"
> 文字配列(4)="ぜろ"
> 文字配列(5)="ご"
>
> のように任意の順番にインデックス番号を付け替える方法を教えていただけませんでしょうか。
>
> ARRAYLISTを使う方法はなんとか実現できたのですが
> 配列、順番 等で検索しても任意の順番の並べ替えは見つかりませんでした。
> 基本的な質問かもしれませんがご教授御願いいたします。

??
1と0をいれかえるばあい。
object o = a[1];
a[1] = a[0];
a[0] = o;

こういうこときいているんじゃないのかな。
このばあいの文字配列ってなんだろう?
引用返信 編集キー/
■16440 / inTopicNo.3)  Re[2]: 配列のインデックス番号を付け替えたい 
□投稿者/ やじゅ (273回)-(2008/04/06(Sun) 00:20:54)
やじゅ さんの Web サイト
> ■No16435 (もんきっき さん) に返信
>>のように任意の順番にインデックス番号を付け替える方法を教えていただけませんでしょうか。
>>
>>ARRAYLISTを使う方法はなんとか実現できたのですが
>>配列、順番 等で検索しても任意の順番の並べ替えは見つかりませんでした。
>

独自に並び替える方法を定義すればいいと思います。

コレクションや配列内の要素を方法を指定して並び替え
http://dobon.net/vb/dotnet/programing/icomparer.html
引用返信 編集キー/
■16465 / inTopicNo.4)  Re[3]: 配列のインデックス番号を付け替えたい 
□投稿者/ もんきっき (16回)-(2008/04/06(Sun) 19:45:23)
>倉田 有大さま

object o = a[1];
a[1] = a[0];
a[0] = o;

その方法ではインスタンスを生成しますので処理速度的に今回は難しいのです
「文字配列」の意味は、例を記述しているときについ使ってしまった単なる名前で
画像含有配列 と命名したほうがよかったです

>やじゅ さま
記載の頁は配列ソートに関するものが主で今回の目的とは違いました



現在やっている配列の番号を入れ替える方法は次の通りです
この方法以外にスマートな方法がないかと思って質問しました
また、この方法に何か問題点があれば教えていただけけませんか
―――――――――――――――――――――――――――
dim 画像含有配列() as オリジナルコントロール
画像含有配列(0)="ぜろ"
画像含有配列(1)="いち" 
画像含有配列(2)="に"

dim 画像含有配列2() as オリジナルコントロール
画像含有配列2=画像含有配列
画像含有配列=nothing
redim 画像含有配列(画像含有配列2.length)

画像含有配列(1)=画像含有配列2(3)
画像含有配列(2)=画像含有配列2(1)
画像含有配列(3)=画像含有配列2(2)
―――――――――――――――――――――――――――

引用返信 編集キー/
■16467 / inTopicNo.5)  Re[4]: 配列のインデックス番号を付け替えたい 
□投稿者/ Hongliang (262回)-(2008/04/06(Sun) 20:18:57)
Hongliang さんの Web サイト
> object o = a[1];
> a[1] = a[0];
> a[0] = o;
>
> その方法ではインスタンスを生成しますので処理速度的に今回は難しいのです

しません。
引用返信 編集キー/
■16470 / inTopicNo.6)  Re[5]: 配列のインデックス番号を付け替えたい 
□投稿者/ 出水 (20回)-(2008/04/06(Sun) 20:43:20)
好きな順に入れ替えたいってのは、どういう順に入れ替えたいんでしょう
ユーザーが入れ替え画面を使って入れ替えたいのか
文字コード順や内部に保存されているサイズ順などにしたいのかですね

あと、速度的に厳しい、というのは実際にやってみた上の話なのでしょうか
そのコードは速度的に厳しいものではないとは思うのですが…
引用返信 編集キー/
■16474 / inTopicNo.7)  Re[6]: 配列のインデックス番号を付け替えたい 
□投稿者/ もんきっき (18回)-(2008/04/06(Sun) 21:51:17)
> object o = a[1];
> a[1] = a[0];
> a[0] = o;

>> その方法ではインスタンスを生成しますので処理速度的に今回は難しいのです

>しません。


上記コードはvbでは

dim object as new オリジナルコントロール
object = a(1)

となるのかと思ったので
dim object
というのはインスタンスを生成している
というのかな?と思いました。違っていたらごめんなさい

>出水 さま
>あと、速度的に厳しい、というのは実際にやってみた上の話なのでしょうか
>そのコードは速度的に厳しいものではないとは思うのですが…

今回の配列は100程度の画像データを含むコントロールを取扱ますので
コントロールの生成をすると、処理時間が体感できてしまいます
なので、番号の入れ替えだけとしたいのです

引用返信 編集キー/
■16477 / inTopicNo.8)  Re[7]: 配列のインデックス番号を付け替えたい 
□投稿者/ やじゅ (275回)-(2008/04/06(Sun) 22:02:45)
やじゅ さんの Web サイト
No16474 (もんきっき さん) に返信
> 今回の配列は100程度の画像データを含むコントロールを取扱ますので
> コントロールの生成をすると、処理時間が体感できてしまいます
> なので、番号の入れ替えだけとしたいのです
>

なんかよく分かりませんが、配列の中身を入れ替え再作成
するよりは、順番だけ格納した配列を用意して、そこから
辿っていく方法の方がいいような気がしますけど。
引用返信 編集キー/
■16478 / inTopicNo.9)  Re[8]: 配列のインデックス番号を付け替えたい 
□投稿者/ επιστημη (919回)-(2008/04/06(Sun) 22:09:51)
επιστημη さんの Web サイト
> なんかよく分かりませんが、配列の中身を入れ替え再作成
> するよりは、順番だけ格納した配列を用意して、そこから
> 辿っていく方法の方がいいような気がしますけど。

わしもそぉおもうー

なにかしら data[N];
int index[N] = { 0, 1, 2, .... N-1 };

なにかしら i番目 = data[index[i]];

ってやっとけば、index[] の中身入れ替えるだけやん。

引用返信 編集キー/
■16483 / inTopicNo.10)  Re[7]: 配列のインデックス番号を付け替えたい 
□投稿者/ 倉田 有大 (179回)-(2008/04/07(Mon) 01:18:17)
No16474 (もんきっき さん) に返信
>>object o = a[1];
>>a[1] = a[0];
>>a[0] = o;
>
> >> その方法ではインスタンスを生成しますので処理速度的に今回は難しいのです
>
> >しません。
>
>
> 上記コードはvbでは
>
> dim object as new オリジナルコントロール
> object = a(1)
>
> となるのかと思ったので
> dim object
> というのはインスタンスを生成している
> というのかな?と思いました。違っていたらごめんなさい

インスタンス生成してませんって。
vbではどう書くかわすれましたがnewしてないでしょ?
object o;
oといういれものをつくっているだけです。
引用返信 編集キー/
■16485 / inTopicNo.11)  Re[9]: 配列のインデックス番号を付け替えたい 
□投稿者/ もんきっき (19回)-(2008/04/07(Mon) 01:24:47)
>順番だけ格納した配列を用意して、そこから
>辿っていく方法の方がいいような気がしますけど。

が、たぶん
―――――――――――――――――――――――――――
dim 画像含有配列() as オリジナルコントロール
画像含有配列(0)="ぜろ"
画像含有配列(1)="いち" 
画像含有配列(2)="に"

dim 画像含有配列2() as オリジナルコントロール
画像含有配列2=画像含有配列
画像含有配列=nothing
redim 画像含有配列(画像含有配列2.length)

画像含有配列(1)=画像含有配列2(3)  ←任意の順番
画像含有配列(2)=画像含有配列2(1)
画像含有配列(3)=画像含有配列2(2)
―――――――――――――――――――――――――――
の方法でしょうか?
現在これでやっているのですが、
これ以外の効率的な方法があるなら、知りたいのです。


引用返信 編集キー/
■16487 / inTopicNo.12)  Re[10]: 配列のインデックス番号を付け替えたい 
□投稿者/ 倉田 有大 (181回)-(2008/04/07(Mon) 01:39:42)
No16485 (もんきっき さん) に返信
> >順番だけ格納した配列を用意して、そこから
> >辿っていく方法の方がいいような気がしますけど。
>
> が、たぶん
> ―――――――――――――――――――――――――――
> dim 画像含有配列() as オリジナルコントロール
> 画像含有配列(0)="ぜろ"
> 画像含有配列(1)="いち" 
> 画像含有配列(2)="に"
>
> dim 画像含有配列2() as オリジナルコントロール
> 画像含有配列2=画像含有配列
> 画像含有配列=nothing
> redim 画像含有配列(画像含有配列2.length)
>
> 画像含有配列(1)=画像含有配列2(3)  ←任意の順番
> 画像含有配列(2)=画像含有配列2(1)
> 画像含有配列(3)=画像含有配列2(2)
> ―――――――――――――――――――――――――――
> の方法でしょうか?
> 現在これでやっているのですが、
> これ以外の効率的な方法があるなら、知りたいのです。

いえ、indexだけ格納した配列つくるだけです。
int [] index = new int[5];
54123にしたいとき
index[0] = 5;
index[1] = 4;
index[2] = 1;
index[3] = 2;
index[4] = 3;
あとは、data[index[3]];
こんなかんじです。
引用返信 編集キー/
■16489 / inTopicNo.13)  Re[8]: 配列のインデックス番号を付け替えたい 
□投稿者/ もんきっき (20回)-(2008/04/07(Mon) 06:30:13)
>倉田 有大 さん

インデックスの操作方法わかりました
そのような方法もあるのだと勉強になりました
ありがとうございます。




解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -