• 締切済み

リストのソート

(05967)リストビューがソートしない http://www.mtakahashi.com/old/05975.html と同様だと思われる現象が起きています。 1回目はちゃんとソートされますが、2回目以降のソートは正しくソートされません。 これと同じ現象になった方はいらっしゃいませんか?

みんなの回答

  • chokuto
  • ベストアンサー率40% (2/5)
回答No.1

どういったコーディングをしているのかという情報がないのでさっぱりわかりません。 ListView_SortItems(または LVM_SORTITEMS)を使っているのか、ListView_SortItemsEx(LVM_SORTITEMSEX)を使っているのかでもやり方が違いますし。 muenosさんが示されているアドレスの回答で「lParamに何らかの値を入れる必要などない」などと書かれていますが、ListView_SortItemsを使っているのであればLVITEM 構造体の lParam メンバがコールバック関数に渡されるのですから、やっぱりlParam を適切にセットしておく必要はありますよね。ListView_SortItemsExを使っているのなら必要ないでしょうけど。 コールバック関数内では、どのようにしてアイテムを識別しているのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ListのSort

    Visual C++ 2005/CLIにてWindowsアプリケーションを作成しています 三つの要素があるListのbの要素でソートしたいのですが、どうしたら よいでしょうか? public ref class Test { private: a; b; c: } void main() { List<Test^>^ test = gcnew List<Test^>; //ここ test->Sort(); // <-ここがわかない }

  • 構造体のリストをソートしたい。

    ある名簿のリストを作りました。 以下のような構造体で、 typedef struct meibo{ char name[10]; int old; struct meibo *next; }MEIBO; これを、ポインタp->next->nameをたどっていって、名前が辞書順になるようにリストを作ったのですが、 これを年齢順にソートして表示させたいんです。 どんな方法があるんでしょうか? 一旦すべてを配列に格納して、クイックソート…とかも考えたのですが、すごく領域をとるし、なんか2度手間(最初から配列に順に格納していけばよかったなぁ・・・と。 それでもやっぱり最初から名列順にするときから配列に入れておくほうがいいのでしょうか? 教えてください。 (最初から年齢を比較してリストを作れば・・ってのはなしで、名列順のリストが存在するものとしてください。)

  • STLのlistのソートについて教えてください。

    STLで何か作ってみようと思っているのですが、複数のメンバを持つ構造体オブジェクトのリスト(要素の値が構造体オブジェクトであるリスト)を、その構造体オブジェクトのメンバの中の1つのをキーとして昇順、又は降順にソートしようとした場合、どのようにすればよいのでしょうか?? http://www5c.biglobe.ne.jp/~ecb/cpp/07_08.html ここを見ると、sort() という関数があるようですが、単に昇順でソートする、としか書いていなく、構造体のリストのソートはどうするのだろうと疑問です。 詳しい方いらっしゃいましたらご教授頂けると幸いです。

  • JAVA LIST ソート

    JAVA LIST ソート JAVAの初心者です。よろしくお願いします。 検索結果の一覧画面のデータを SORT ボタンをクリック時、JAVA側で セッションBEANに保持してる 画面一覧のLISTデータをあるキーでソートしたいですが、 わからなくて困ってます。 自分なり考えたのは、 ArrayList list = new ArrayList(); List.add(getSessionBean());ーーーセッションBEANのデータをリストに追加 Collections.sort(list, new MyComparator() ここで MyComparator()での書き方がよくわかりません。 もし、ソートキーが 複数あれば どうなりますか? サンプルなどがあれば、ご教授頂ければ幸いです。

  • リストビューのソートが2回必要

    ListView_SortItemsを使ってリストのアイテムをソートしているんですが、ListView_SortItemsを2回以上呼ぶ必要があるみたいです。1回では正しくソートされない場合があります。ソートが全部終わっていないのに途中でソートが終わってListView_SortItemsが処理を返してしまっているんだと思います。 こういう状況で、見直した方がよさそうな部分があればその部分を教えてください。

  • STLのList.sortが上手く使えない

    VC++2005のSTLの、List.sort()を使ってメンバ変数aでソートしたいのですが上手くいきません。 MSDNで"IComparerをオーバーロードしろ"と、書いてあったのを見て、 いろいろ調べて試してはみたのですが、理解不足のため全て失敗しました。 ネットに転がっているサンプルはC#のモノばかりでサッパリです。 調べる手段も分からず八方塞な状態です。どうかお力を貸してください。お願いします。 class TestList { protected: std::list<TestList*> RunList; int a; //この変数でソートする public: MakeList(TestList *test); //リストを"RunList"に登録する }; void main() { TestList Test(); //全てのリストはココに登録 Test->MakeList(new TestList()); Test->MakeList(new TestList()); Test->RunList.sort(); //←ココ。メンバ変数aでソートしたい } 【追記】MSDNの方法では"mscorlib.dll"が必要になります。 もし可能なら違う方法になったとしても、使うことなくソートできるなら、その方が良いです。

  • リスト構造のソートで悩んでます。。。

    リスト構造のソートで悩んでます。プログラムの内容はファイルからデータをリスト構造の構造体に読み込み、名前順にソートし結果を表示する。というものです。データの追加や削除はできるのですがソートとなると頭が混乱してしまいお手上げ状態になってしまいました。。。。。 読み込み用のデータとプログラムソースを以下に記載するのでどなたか良きアドバイスをお願いしますm(_ _)m ○データ Sakuragi 16 Rukawa 16 Miyagi 17 Akagi 18 Mitsui 18 ○ソース #include <stdio.h> #include <stdlib.h> #include <string.h> #define MENBER 5 typedef struct data{ char name[BUFSIZ]; int age; struct data *next; }LIST; LIST *newLIST(void); LIST *sort(LIST *); int main(int argc,char *argv[]){ FILE *fp; LIST *p; LIST *np; LIST *npb; LIST *head; char namae[BUFSIZ]; int toshi,i; if((fp=fopen(argv[1],"r"))==NULL){ printf("no file\n"); exit(1); } head = newLIST(); npb =head; for(i=0;i<MENBER;i++){ np = newLIST(); fscanf(fp,"%s %d",namae,&toshi); strcpy(np->name,namae); np->age = toshi; npb->next =np; npb = np; } sort(head); for(p=head->next;p != NULL;p=p->next){ printf("%s\t%d\n",p->name,p->age); } for(p=head->next;p != NULL;p=np){ np = p->next; free(p); } fclose(fp); return(0); } LIST *newLIST(){ LIST *p; p = (LIST *)malloc(sizeof(LIST)); p->next = NULL; return(p); } LIST *sort(LIST *head){ }

  • 双方向リストのソート方法について。

    単刀直入に言いまして、双方向リストのデータを入れ替えるのではなくて、リスト前後を指すポインタの繋ぎ代えをして、ある一定条件に従ったリストへのソートをしたいと思っています。 リスト構造の前後にダミーを置いて……という方法は取りたくなく、出来るだけメモリを節約した方法が知りたいです。 また、そのリスト数は大体20個くらいで、1秒間に大体50~60回くらい呼ばれるモノです。 リストのデータ数は比較的大きい物です。 参考になる書籍とかでも構いませんので、是非とも教えて下さい。

  • STLのlist どのデータでソートするか分からないデータでソートを行うには?

    class data { public: 文字列型* str; //コンストラクタでN個の配列を生成 int N; //文字列の配列の個数 }; list<data> obj; と書いて、objに対して大量にデータを追加した後、その要素をソートするところで困っています。 データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。 リストのデータの一つ目 str[0] = "abc"; str[1] = "def"; リストのデータの二つ目 str[0] = "ghi"; str[1] = "jkl"; というリストのデータがあったときに、str[0]の要素でソートしたいということなのですが........ メンバのint型などについては、operator<をオーバーロードする方法が見つかったのですが........

  • 線形リストの高速ソート

    線形リストを最も高速でソートする方法は何でしょうか? 必要であれば双方向リストにすることも可能ですが、できれば単方向で可能なのが知りたいです。 特許取得されている方法でもOKです。