问题标签 [circular-buffer]
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.
c# - 如何有效地包装固定大小的循环缓冲区的索引
我有一个固定大小的循环缓冲区(作为数组实现):在初始化时,缓冲区被指定的最大元素数填充,这允许使用单个位置索引来跟踪我们在圆中的当前位置。
访问循环缓冲区中元素的有效方法是什么?这是我目前的解决方案:
一些定义:
end_index
是紧跟在圆中最后一个元素之后的元素的索引(它也被认为与 start_index 或圆的第一个元素相同)。
buffer_size
是缓冲区的最大大小。
c# - 堆栈的替代方案
我正在使用 C# 在 .Net 环境中工作。我需要一些 Stack 数据结构的替代方案。某种绑定堆栈。集合中元素的数量不应超过某个固定的指定数量。并且,如果达到该数量并推送新元素,则必须删除大多数旧元素。我需要这个来存储撤消/重做策略的命令。
c - 循环缓冲区的结束指针问题
我正在使用 Visual c++。
我正在尝试实现一个循环缓冲区,这个 CB 必须处理特定类型的数据......事实上,它是一个结构数据,其中我们有某种原始数据要存储在 char 类型和与之关联的日期数据...这已使用结构实现。
这是更多详细信息的代码:
当我编译代码时,一切都很好,但是当我调试时,我注意到 buffer_end 指针有问题,它说 bad_pointer ......如果容量大于 56 就会发生这种情况......我不知道为什么指针不能指向缓冲区的末尾。但是如果容量小于 56,则指针正好指向缓冲区的末尾
如果有人知道为什么会这样,以及如何解决它,请帮助我..
提前致谢
java - 使用循环数组实现双端队列?
我在使用循环数组实现这个双端队列时遇到了很多麻烦;特别是,无论我尝试什么,删除方法似乎都在删除错误的元素。任何人都可以帮忙吗?
c++ - 使用 boost::circular_buffer 初始化 boost::multi_array
我想创建一个boost::multi_array
of boost::circular_buffer<double>
,但我不知道如何启动它。它应该是 12boost::circular_buffer<double>
个大小为 的数组50
。
我试过了:
我得到一个编译错误。
有人可以给我一个提示如何b
正确启动吗?
java - 使用循环数组实现队列:调整循环数组大小的最佳方法是什么?
我正在使用循环数组实现一个队列,并且我有点卡在resize()
方法实现中(当数组已满时)。
在该enqueue()
方法中,我检查数组的大小是否等于它的长度,并获取它是否已满。现在,我没有抛出异常,而是尝试调整数组的大小。
问题是,我有两种情况要考虑
- 前 <= 后
- 后<前
将旧数组的元素复制到更大的新数组中的最佳方法是什么?
我认为它使用for循环,例如:
然后oldArray
= newArray
,返回newArray
并调整它的大小
我不确定用于执行此操作的 for 数量,我担心我会失去价值。
有人可以告诉我是否有更好的方法来做到这一点?
c# - 如何移动一个数组元素环绕?
我正在尝试编写一个遍历数组的函数,当它找到某种类型的值时,它将向右移动定义数量的位置。
我知道如何通过临时存储一个值来移动元素,将右侧元素向左移动,然后将临时值写入正确的位置。
我正在苦苦挣扎的一点是,如果某个字符出现在数组的末尾附近,我需要它环绕并从数组的开头继续,所以是循环的。
例如,一个数组将大写字母向右移动 3 位,特殊字符向左移动 1 位:
要将 8 的元素移动到下面的 3 个位置,但这仅适用于 8 出现在数组末尾的 3 个元素之前并且不会环绕的情况。
输入数组:
所需的输出:
c++ - 没有优先级反转的环形缓冲区
我有一个需要将数据传递给低优先级进程的高优先级进程。我编写了一个基本的环形缓冲区来处理数据的传递:
这就是问题所在。假设低优先级进程有一个预言机,它准确地告诉它需要读取多少数据,因此count()
永远不需要调用。然后(除非我遗漏了什么)没有并发问题。但是,只要低优先级线程需要调用count()
(高优先级线程可能也想调用它以检查缓冲区是否太满),count() 中的数学运算或更新可能会结束不是原子的,引入了一个错误。
我可以在开始和结束的访问周围放置一个互斥锁,但是如果高优先级线程必须等待低优先级线程获取的锁,这将导致优先级反转。
我也许可以使用原子操作解决一些问题,但我不知道有一个很好的跨平台库提供这些。
是否有避免这些问题的标准环形缓冲区设计?
c++ - c++:访问字符串映射的元素并提升循环缓冲区
我正在编写一个程序,它将城市名称的文本文件读入向量,然后使用 stl::map 将每个城市与提升循环缓冲区相关联。我还有一个温度数据向量,在将其作为字符串从另一个文本文件中读取后,我将其转换为双精度类型。我想知道如何将这些数据输入我选择的循环缓冲区。例如,温度数据来自波士顿,所以我想将其放入与波士顿相关的循环缓冲区中。如果有人能告诉我如何做到这一点,我将不胜感激!这是我的代码。与地图有关的代码在底部附近。
c++ - 模板类类型大小
我为循环缓冲区编写了一个模板类:
这个类执行的一些操作依赖于对T
. 这似乎可以正常工作(即T
检查)。但是,当我尝试使用相同的类 where is时,由于某种原因计算为 16。我上次检查时,双字是 4 个字节,而不是 16。有谁知道为什么会这样?谢谢。BYTE
sizeof(T) == 1
T
DWORD
sizeof(T)
附加信息
由于其专有性质,我无法发布所有代码,但这是有问题的类声明和函数定义:
pFlags->pHead += sizeof(T);
执行of时会出现上述问题IncrementHead
。