问题标签 [deque]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1572 浏览

java - 在java中实现双端队列的问题

抱歉,只是从我这里的问题开始:这里我正在尝试运行此方法以从双面队列(deque)中删除通用值(EltType),但我一直收到错误,我两次调用 insertFirst ,然后将值“3”两次插入到数组中,然后,当我运行 removeFirst 时,它将打印出一次“3”,然后打印出“Null”。有人能帮我吗?

谢谢 :)

0 投票
3 回答
442 浏览

java - 找不到基于数组的双端队列问题,但出现 outOfBounds 异常

我一直试图弄清楚这个问题,但无济于事。我想我的代码一定有几个我看不到的问题。我之前使用稍微复杂一点的方式实现了这个,并以更简单的形式编写它来帮助我下面一年中正在苦苦挣扎的朋友,但我最终让自己陷入了困境!

代码如下:

问题是当我打电话时

这个,它返回一个错误。

insertLast 方法也是如此。我想不通,希望 stackOverflow 的仔细审视可以帮助我。非常感谢 !

0 投票
2 回答
517 浏览

java - 有人可以快速给我的双端队列代码吗?

已经为此工作了一段时间,我想我终于破解了它,它适用于我所有的测试,但我感觉会有一些琐碎的问题。这是一个高度简化的双面队列(deque)版本,每次添加一个值时,都会创建一个临时数组来存储所有值,然后附加新值。我相信这种方式最容易解释。如果有人可以请仔细检查我是正确的,这里没有明显的错误,我将非常感激。非常感谢大家!:)

0 投票
2 回答
196 浏览

scala - Scala 中是否可以有两个“同步”优先级队列?

我有一组具有两种优先级的对象。我可以创建两个按它们排序的 PriorityQueue。问题是,当我从其中一个元素中取出元素时,它显然不会从另一个元素中消失。

是否可以“同步”创建 2 个队列,以便当元素从一个队列中删除时,它将从另一个队列中删除?

0 投票
4 回答
16452 浏览

java - 使用循环数组实现双端队列?

我在使用循环数组实现这个双端队列时遇到了很多麻烦;特别是,无论我尝试什么,删除方法似乎都在删除错误的元素。任何人都可以帮忙吗?

0 投票
2 回答
2212 浏览

java - 扩展圆形数组双端队列的问题

问候,

我正在尝试使用在数组已满时扩展的循环数组来实现 Deque。我的问题似乎是数组拒绝扩展。要么我计算 size() 不正确,要么我更新前后索引的方式有问题。我已经看过很多次了,我似乎明白了这一点。任何人都可以帮忙吗?

测试输入:

测试输出:我设置了几个打印语句,由于某种原因,大小始终保持在 7...

0 投票
3 回答
11938 浏览

c - 队列性能明智,这是更好的实现 - 数组或链表

当我必须插入很少的元素时,哪种方式可以更快地入队和出队,数组比链表好吗?

我需要插入一些元素,并且必须从队列中删除并读取已删除的元素。如果它是数组,我可能必须在每次删除元素时修改索引。插入和删除也可以同时发生。

从下面的案例中哪一个更好?

数组代码

链表

0 投票
4 回答
6886 浏览

c++ - C++中双端队列的实现

我正在编写 Deque 的实现作为编程练习,但它一点也不顺利。我缺少一些关键功能,这些功能是使我获得正确功能的测试主程序所需的。

到目前为止,这是我的代码:

我想知道是否有人可以告诉我第 66 行的函数正在返回:

因为我不确定我做错了什么。另外,如果有人愿意给我一个 pop_front() 函数的示例,以便我也可以使用它来创建 pop_back() 函数,那就太好了。最后,我已经完成了一个擦除函数,但我不确定如何创建第二个,它基本上擦除了两个迭代器范围内的一个值,它在第 176 行中引用。

任何帮助将不胜感激。先感谢您。

0 投票
3 回答
4043 浏览

c++ - 尝试使用 Win32 线程进行异步 I/O

我正在为 Windows 编写一个串口软件。为了提高性能,我尝试将例程转换为使用异步 I/O。我已经编写好代码并且工作得相当好,但我是这方面的半初学者,我想进一步提高程序的性能。在程序的压力测试期间(即以高波特率尽可能快地向/从端口突发数据),CPU 负载变得相当高。

如果有人在 Windows 中具有异步 I/O 和多线程方面的经验,如果您能看看我的程序,我将不胜感激。我有两个主要担忧:

  • 异步 I/O 是否正确实现?我在网上找到了一些相当可靠的来源,建议您可以通过在最后用您自己的数据实现您自己的 OVERLAPPED 结构来将用户数据传递给回调函数。这似乎工作得很好,但对我来说确实有点“骇人听闻”。此外,当我从同步/轮询转换为异步/回调时,程序的性能并没有太大改善,这让我怀疑我做错了什么。

  • 将 STL std::deque 用于 FIFO 数据缓冲区是否合理?由于程序当前正在编写,我只允许一次接收 1 个字节的数据,然后必须对其进行处理。因为我不知道我会收到多少数据,所以可能是无穷无尽的。我假设当它必须分配数据时,这种每次 1 字节的行为会在双端队列后面产生缓慢的行为。而且我也不相信双端队列是线程安全的(我应该吗?)。如果使用 STL deque 不明智,有什么建议可以使用更好的数据类型吗?基于静态数组的循环环形缓冲区?

也欢迎对代码的任何其他反馈。


实现了串行例程,因此我有一个名为“Comport”的父类,它处理与串行 I/O 相关的所有内容。从这个类中,我继承了另一个名为“ThreadedComport”的类,它是一个多线程版本。

ThreadedComport 类(它的相关部分)

通过 CreateThread() 创建的主线程例程:

依次调用以下三个函数:

异步 I/O 回调函数:

0 投票
1 回答
1555 浏览

c++ - 我需要在析构函数中清理双端队列中的对象吗?

我的双端队列包含对象,而不是指针。

如:

我知道它是否是指针,我必须在解构函数中清理它。

我的问题是:如果只是反对,是否真的不需要像这样清理 MyObject: