我有一份任务清单.任务由名称,截止日期(和时间)和持续时间定义.
我的TaskManager类处理std::list<Task>按截止日期排序.它必须提供在特定日期完成任务的方法.
例如:我的任务1应于周一上午6点到期,任务2应于周一上午9点到期,任务3应于周二下午7点到期.如果我将"Monday"传递给我的方法,它应该返回任务1和2.
你会如何实现?
我认为(从API的角度来看)一个好方法是提供一std::list<Task>::iterator对.所以我会有一个TaskManager::begin(date)方法.你认为这个方法应该通过从列表的开头迭代直到它找到该日期的第一个任务,或者通过从a获取它来获得迭代器std::map<date, std::list<Task>::iterator>(但是在添加时,我们必须保持它是最新的)删除任务)?
然后,我该如何实现该TaskManager::end(date)方法?
而不是使用a std::list,考虑使用std::setor std::map,它可以将项目保持在排序顺序而无需额外的努力.然后,您可以使用std::set::lower_bound或查找特定日期到期的项目std::map::lower_bound.
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |