gpt4 book ai didi

c++ - 将 std::deque 的现有元素推到前面?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:47:31 25 4
gpt4 key购买 nike

我正在寻找解决此问题的好方法。甚至不确定 std::deque 是否是我想要的,但基本上我需要一个容器,我会经常访问它,然后将现有项目移到前面,并将新项目也添加到前面。有什么办法可以用 deque 做到这一点吗?

最佳答案

对于 std::deque<T>您可以在任何地方高效地访问元素,并且可以在前端和末尾高效地添加/删除元素。然而,std::deque<T>不太喜欢从中间移动对象:它需要以某种形式填充间隙。基本上,移动元素相当于插入和删除的组合。

使用 std::vector<T>std::deque<T>在假设对象本身和容器都不是很大的情况下移动对象时,它可能仍然是最佳选择。例如,使用 std::vector<T> 1000 个指针和在其中移动的对象可能仍然比使用基于节点的容器更快。容器选择的确切大小取决于您的典型访问模式、对象的大小等。

对于大型对象或大型容器,您可能需要使用 std::list<T>连同 splice()手术。 ... 如果所有这些都太慢,您可能想更详细地解释您实际尝试的内容,并可能使用不同的策略和/或更专业的容器,例如优先级队列。

关于c++ - 将 std::deque 的现有元素推到前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com