.NET VC++ 2005です。
GetEnumerator()を使用してハッシュテーブル内のデータを取得する
処理なのですがGetEnumerator()を使用して値を取得すると配列の要
素順ではなく取得されてしまいます。配列の先頭から取得するにはど
のようにすれば良いでしょうか?
IEnumrator^ a = test->GetEnumerator();
while(a->MoveNext())
{
}
> 配列の要素順ではなく取得されてしまいます。
アタリマエです。ハッシュ表なんだから。
> 配列の先頭から取得するにはどのようにすれば良いでしょうか?
できません。
>επιστημηさん
ご意見ありがとうございます。出来ないんですか(><)
何か変わりの方法を考えるしかないでしょうか?
ハッシュテーブルは配列ではないですし,そもそも順序づけなされていないものです。
# 理由は,ハッシュの仕組みを勉強してください。
順序が重要なのであれば,ListやLinkedListを使って自分で制御するか,
SortedDictionaryやSortedListのような,ソートされることが定まっているものを使って
ください。
>YuOさん
貴重な意見ありがとうございます。
GetEnumeratorですがkeyで値をひっぱってくることは可能でしょうか?
順番に取得できなくてもkeyで目的の値がひっぱれれば代替できそうな
感じです。
えーと、ぶっちゃけナニがしたいんですか?
挿入したのと同じ順序で取り出したいってことですか?
>επιστημη
ハッシュテーブルに3つの値を格納(順番は固定)していてそれを
格納されてる順番にコンボボックスに表示させたいだけなのです
が3つしか値がないのでKeyから直接値をひっぱってコンボボック
スに追加すれば同じような意味合いになると思いました。
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[]で表引
き
}
>επιστημηさん
サンプルプログラムありがとうございました。
意図した処理を記述することが出来ました。
ハッシュテーブルについて知識がまだ乏しいので
もっと調べてみようと思います。