【发布时间】:2013-05-22 07:59:37
【问题描述】:
我正在编写一个简单的无句柄 ui 框架,我需要自己发送所有消息。
每个widget都有一个child列表,它有两个属性:paint order(接收paint消息的顺序)和other-event order(接收paint以外消息的顺序)。
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 可以让我在每次发送消息时免于排序,或者我需要维护 std::list 并在每次将子项插入小部件时对其进行排序?
【问题讨论】:
标签: c++ data-structures stl