GetEnumerator()について – プログラミング – Home

通知
すべてクリア

[解決済] GetEnumerator()について


プログラム未熟者
 プログラム未熟者
(@プログラム未熟者)
ゲスト
結合: 16年前
投稿: 8
Topic starter  

.NET VC++ 2005です。

GetEnumerator()を使用してハッシュテーブル内のデータを取得する
処理なのですがGetEnumerator()を使用して値を取得すると配列の要
素順ではなく取得されてしまいます。配列の先頭から取得するにはど
のようにすれば良いでしょうか?

IEnumrator^ a = test->GetEnumerator();

while(a->MoveNext())
{

}


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> 配列の要素順ではなく取得されてしまいます。

アタリマエです。ハッシュ表なんだから。

> 配列の先頭から取得するにはどのようにすれば良いでしょうか?

できません。


返信引用
プログラム未熟者
 プログラム未熟者
(@プログラム未熟者)
ゲスト
結合: 16年前
投稿: 8
Topic starter  

>επιστημηさん

ご意見ありがとうございます。出来ないんですか(><)
何か変わりの方法を考えるしかないでしょうか?


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

ハッシュテーブルは配列ではないですし,そもそも順序づけなされていないものです。
# 理由は,ハッシュの仕組みを勉強してください。

順序が重要なのであれば,ListやLinkedListを使って自分で制御するか,
SortedDictionaryやSortedListのような,ソートされることが定まっているものを使って
ください。


返信引用
プログラム未熟者
 プログラム未熟者
(@プログラム未熟者)
ゲスト
結合: 16年前
投稿: 8
Topic starter  

>YuOさん

貴重な意見ありがとうございます。

GetEnumeratorですがkeyで値をひっぱってくることは可能でしょうか?
順番に取得できなくてもkeyで目的の値がひっぱれれば代替できそうな
感じです。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

えーと、ぶっちゃけナニがしたいんですか?
挿入したのと同じ順序で取り出したいってことですか?


返信引用
プログラム未熟者
 プログラム未熟者
(@プログラム未熟者)
ゲスト
結合: 16年前
投稿: 8
Topic starter  

>επιστημη

ハッシュテーブルに3つの値を格納(順番は固定)していてそれを
格納されてる順番にコンボボックスに表示させたいだけなのです
が3つしか値がないのでKeyから直接値をひっぱってコンボボック
スに追加すれば同じような意味合いになると思いました。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

Dictionary<String^,String^> dic;
dic.Add(Lone,Lいち);
dic.Add(Ltwo,Lに);
dic.Add(Lthree,Lさん);
dic.Add(Lfour,Lし);
dic.Add(Lfive,Lご);
for each ( String^ key in gcnew array<String^> { Lone, Ltwo, Lthree,
Lfour, Lfive }) {
Console::WriteLine(dic[{0}] = {1}, key, dic[key]); // operator[]で表引

}


返信引用
プログラム未熟者
 プログラム未熟者
(@プログラム未熟者)
ゲスト
結合: 16年前
投稿: 8
Topic starter  

>επιστημηさん

サンプルプログラムありがとうございました。
意図した処理を記述することが出来ました。

ハッシュテーブルについて知識がまだ乏しいので
もっと調べてみようと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました