我正在嘗試確定用於事件調度程序的容器。我想要滿足的要求是:用於事件調度程序的STL容器
- 活動應該由時間進行排序,並通過獲取 調度的前面,評估事件,然後刪除 前進行評估。
- 可以隨時插入事件(計劃在將來隨時評估)。
- 如果將其他元素添加到調度程序中,應該可以有一個指向非 事件的指針。例如, 在評估當前事件時,可能還需要刪除未來事件 。關於這個未來事件的知識應該是作爲指針實現的 。
- 應該可以重新安排事件,例如改變他們的時間到未來的時間。
什麼樣的容器是可能的?
- STL隊列 - 不允許在任何地方插入的事件(例如,通過時間)。
- STL向量 - 將新事件插入向量可以中斷指向現有事件的指針。
- STL列表 -
事件在構建之後是恆定的,因此除了刪除現有事件並在稍後創建新事件之外,重新安排是不可能的。編輯:與混淆STL集。
還有其他的選擇嗎?我已經讀過,通常不建議您創建自己的容器(例如鏈接列表)以提高效率。
感謝您的諮詢!
編輯
從意見,另外兩個建議:
- STL設置 - 元素插入之後維持恆定。
- STL priority_queue - 取決於STL容器(載體或雙端隊列)的選擇,這可以在插入,後保存指針(雙端隊列一樣),但只有當在任一端插入。但是,插入後元素是不變的。
對於要求1和2,其有趣的是你沒有探索'std :: set'和'std :: priority_queue' – WhiZTiM
啊謝謝!沒有投入足夠的精力。這些容器在插入後是否保留指向現有元素的指針? – Kurt
編輯:因爲'std :: priority_queue'允許你指定一個容器,它可以是STL的'std :: vector'或'std :: deque',那麼使用'std :: deque'會保留指針 – Kurt