1

私は、すべてのメッセージを自分でディスパッチする必要がある単純なハンドル 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 よりも優れたデータ構造はありますか。

4

1 に答える 1