こんばんは、毎度お世話になっております。
早速質問です。
C++のリストを利用しているのですが、リストの要素のメンバを用いてのソートはできないのでしょうか。
これでは解りにくいと思いますので、具体的に述べますと、
所持しているアイテムを格納しているリスト
std::list<Item*> belongingList があります。
Itemクラスには、int型のitemNumというメンバ変数がありまして、これを元に昇順にソートをしたいのです。
所持品の中には装備も含まれておりますので、アドレスは変えたくありません。
やはり、自分でリストを作った方が良いのでしょうか?
リストのソート
Re:リストのソート
>リストの要素のメンバを用いてのソートはできないのでしょうか。
listは Itemのポインタを持っている状態なのですね。
できますよ。
listの sortメンバ関数にはユーザー定義の比較関数や関数オブジェクトを指定することができます。
ttp://www.cppll.jp/cppreference/cpplist_details.html#sort
たとえば、
[color=#d0d0ff" face="monospace]
bool ItemComp(const Item* lhs, const Item*rhs)
{
return lhs->itemNum < rhs->itemNum;
}
[/color]
こういう関数を用意して、
[color=#d0d0ff" face="monospace]
std::list<Item*> list;
...
list.sort(&ItemComp);
[/color]
こんな感じで。
Re:リストのソート
Justyさん、たかぎさん、ありがとうございました!
おかげで無事に解決できました。
こんな簡単な操作で解決できるとは…
半ば諦めてリストを作り直そうとすら思っていたので、本当に助かりました!
おかげで無事に解決できました。
こんな簡単な操作で解決できるとは…
半ば諦めてリストを作り直そうとすら思っていたので、本当に助かりました!