问题标签 [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 投票
4 回答
966 浏览

c++ - 如何存储带时间戳的数据序列?

我有一个需要存储一系列电压数据的应用程序,每个条目就像一对 {time, voltage}

时间不一定是连续的,如果电压不动,我就不会有任何读数。

问题是我还需要一个查找时间戳的函数,例如 getVoltageOfTimestamp(float2second(922.325))

我的解决方案是有一个存储对的双端队列,然后每 30 秒,我进行一次采样并将索引存储到映射 std::map 中,

所以在getVoltageOfTimestamp(float2second(922.325))中,我只需找到最接近所需时间的interval_of_30_seconds,然后将我的deque指针移动到对应的_index_of_deque,从那里迭代并找到正确的电压。

我不确定这里是否存在更“计算机科学家”的解决方案,谁能给我一个线索?

0 投票
4 回答
15679 浏览

c++ - 通过索引访问 STL 双端队列是 O(1)?

我读过通过位置索引访问元素可以在 STL 双端队列中以恒定时间完成。据我所知,双端队列中的元素可能存储在几个不连续的位置,从而消除了通过指针算法进行的安全访问。例如:

abc->defghi->jkl->mnop

上述双端队列的元素由单个字符组成。一组中的字符集表明它是在连续内存中分配的(例如,abc 位于单个内存块中,defhi 位于另一块内存中,等等)。谁能解释如何通过位置索引访问可以在恒定时间内完成,特别是如果要访问的元素位于第二个块中?还是双端队列有指向块组的指针?

更新:或者双端队列还有其他常见的实现吗?

0 投票
2 回答
4219 浏览

c++ - 用户定义结构的双端队列

我有一个用户定义的结构struct theName,我想制作这些结构的双端队列(deque<theName> theVar)。但是,当我尝试编译时,出现此错误:

为什么我不能这样做?

文件:Logger.h

0 投票
6 回答
10051 浏览

c++ - C++联合赋值,有没有好办法呢?

我正在与图书馆合作,我必须与工会合作。具体来说,我正在使用 SDL 和SDL_Event union。我需要制作 SDL_Events 的副本,并且找不到关于使用联合重载赋值运算符的好信息。

假设我可以重载赋值运算符,我应该手动筛选工会成员并复制相关成员,还是我可以简单地来一些成员(这对我来说似乎很危险),或者只是使用 memcpy() (这看起来简单快捷,但有点危险)?

如果我不能重载运算符,那么我最好的选择是什么?我想我可以制作新副本并传递一堆指针,但在这种情况下,我宁愿不这样做。

欢迎任何想法!

编辑:根据要求的错误消息,顺便说一句,我想我学到了一些东西......

physworld.cpp:325: error: no match for ‘operator=’ in ‘CurrentEvent = ((physworld*)this)->physworld::SDL_UserInputEvents.std::queue<_Tp, _Sequence>::pop [with _Tp = SDL_Event, _Sequence = std::deque<SDL_Event, std::allocator<SDL_Event> >]()’ /usr/include/SDL/SDL_events.h:220: note: candidates are: SDL_Event& SDL_Event::operator=(const SDL_Event&)

EDIT2:这太愚蠢了......我认为 Deqeus pop() 成员返回了删除的项目。我以为代码太简单了,不能直接是我的代码,但事实证明这是错误的。

我的代码看起来像:

因此,如果不出意外,我将学习更仔细地查看我最近没有使用过的容器的成员函数。感谢您解释默认情况下分配的工作,否则将需要更长的时间才能找到它。

0 投票
2 回答
4406 浏览

c++ - std::deque:如何获取指向指定索引处元素的迭代器?

我有一个 std::deque,我想在指定的索引处插入一个元素(我知道 std::list 会更好)。deque::insert() 函数采用迭代器来指定要插入的位置。给定一个索引,我如何获得一个指向该位置的迭代器,以便我可以将该迭代器传递给 insert()?

例如:

我确定这是一个非常基本的问题,对此我深表歉意。自从我使用 STL 以来已经有很长时间了,而且我在 std::deque 的成员列表中看不到任何明显符合我要求的内容。谢谢。

0 投票
4 回答
482 浏览

c - 反转没有哨兵的循环双端队列

嘿 Stackoverflow 我正在做我的作业,我正在尝试反转一个没有哨兵的循环链接双端队列。这是我的数据结构:

这是我扭转双端队列的方法:

但是,当我运行它并在其上放置值 1、2 和 3(在这种情况下,TYPE 只是 int 的别名)并反转它时,我得到 2、1、3。有没有人对我可能在做什么有任何想法错误的?

提前致谢。

0 投票
3 回答
1731 浏览

java - 显示和插入方法错误(双端队列)

1)我的问题

当我从右侧或左侧程序中删除时将删除 true 但是当我调用显示方法时内容错误

像这样我插入 12 43 65 23 并且当从左侧程序中删除时将删除 12 但是当调用显示方法显示如下 12 43 65

并且当从正确的程序中删除时将删除 23 但当调用显示方法时显示如下 12 43

为什么 ??????);

当我尝试在删除后插入时写这个

无法正确插入,因为队列已满。首先删除权利,然后你可以插入权利

问题出在哪里 ??

请帮我

2)我的代码

头等舱

二等

0 投票
3 回答
1264 浏览

stl - 实例化 C++ 模板函数

我面临一些“未定义的引用”错误的问题。我可能无法发布代码,但声明和调用函数的方式如下:

声明:

我将上述函数调用如下:

上述语句(我在其中调用函数)被标记为错误。这些是消息:

对`int is_voiced(std::deque >&, int, int, double, int, short&, long) 的未定义引用

对“int pitch_detect(std::deque >&, int, int)”的未定义引用

非常欢迎解码上述错误的任何帮助。谢谢,斯里拉姆

编辑:上述函数在单独的头文件和相应的 C++ 文件中定义。当我尝试编译它们并创建一个目标文件时,我没有遇到任何问题。这些错误出现在链接器阶段。

0 投票
2 回答
2175 浏览

c++ - 有没有办法将双端队列的内部存储大小作为向量::容量?

我知道双端队列和向量都为增长预留了一些空间。vector::capacity() 能够获取向量的内部保留空间。双端队列在标准中没有这样的成员。有什么方法可以获取这些信息吗?

0 投票
3 回答
1205 浏览

python - 使用 Deque.popleft 作为函数的参数

我正在尝试存储命令列表以在 Python 中使用 deque 发送串行电缆。

我的函数“send_command”接受 3 个值;命令,一个整数。暂停和布尔等待。其定义如下。

我想做的是,而不是像这样调用这个函数:

... 或者...

我希望能够将命令存储在双端队列列表中,然后使用 popleft 函数调用我的函数。这将允许我执行以下操作:

...并使用 deque.append() 作为继续向列表中添加内容的一种方式,然后将其发送到我的 send_command 函数。然后,我可以在需要时(或尽可能快地在我的代码的串行部分执行的操作)中加入和退出列表中的新命令。

我正在努力解决的部分实际上是使用CommandList.popleft 或 deque 列表的任何部分作为我的 send_command 函数的参数。它似乎并不像:

我确定这很简单,但我无法弄清楚。

任何人都可以帮忙吗?

非常感谢你。

安迪