我可以擦除 std::queue 中间的节点吗?



如果我有std:queue可以擦除中间的元素吗?

还是我应该只选择一个简单的向量?

编辑:

最后,我的搜索变成了std::liststd::deque之间。 这篇文章提供了一个很好的比较,尽管我仍然有点犹豫不决。

一方面,由于删除后我不会访问更多成员(操作完成(,所以我并不关心迭代器失效。 另一方面,我可能会一个接一个地访问(或搜索(元素,所以随机访问可能并不那么重要......

  1. 不,除非你想把所有的元素都拿出来,然后把它们放回去。

  2. std::list可能会更好,但这取决于您还想用它做什么。

std:: queue是一个容器适配器,即它以"先进先出"的特定顺序处理元素。你为什么要打破这个秩序?首先,不能从std:: queue的任何位置擦除元素,但front端除外(直到并且除非您使用其他辅助数据结构(。如果您想要类似的功能,那么即使在std:: list盲目地进行std:: vector之前。分析你的代码,如果你觉得需要std:: list去做。

最新更新