私は、すべてのメッセージを自分でディスパッチする必要がある単純なハンドル UI フレームワークを作成しています。
すべてのウィジェットには子のリストがあり、2 つのプロパティがあります: paint order (ペイント メッセージを受信する順序) と other-event order (ペイント以外のメッセージを受信する順序)。
void Widget::sortChildWidgets( SortMode mode )
{
if (mode == kSortByPaint) {
//return true if should precede otherwise return false;
m_children.sort([&](Widget* pw1, Widget* pw2) ->bool {
if (pw1->getPaintOrder() < pw2->getPaintOrder()) {
return true;
} else {
return false;
}
});
}
if (mode == kSortByEvent) {
//return true if should precede otherwise return false;
m_children.sort([&](Widget* pw1, Widget* pw2) ->bool {
if (pw1->getEventOrder() < pw2->getEventOrder()) {
return true;
} else {
return false;
}
});
}
}
ウィジェットは実行時にその順序を変更する可能性があるため、メッセージをディスパッチするたびに頼る必要がありますが、これは間違いなく悪いことです。
私の問題:メッセージをディスパッチするたびにソートから解放するために、std::list よりも優れたデータ構造はありますか。