【发布时间】:2017-07-12 03:42:08
【问题描述】:
我正在开发一个需要“滑动窗口”的应用程序,它只是一个字符串容器,
Window = ["the", "dog", "is", "hungry"]
应用程序处理大型文本文件,当满足某些条件时,窗口会在末尾添加一个新字符串并删除第一个元素,
即说“现在”是下一个要添加的词,那么
Window <- Window.AddToEnd("now") and Window.DeleteFirst()
就这样,Window = ["dog", "is", "hungry", now"]
每次 Window 更改时,都会在顺序很重要(即索引很重要)的元素上运行一个进程。
最初我使用了一个字符串向量并尝试了一个双端队列。 我很好奇人们会认为什么是最好的?
总而言之,我需要一个包含索引的字符串容器,其中非常定期地添加一个新元素 + 删除第一个元素。我还需要遍历容器 A LOT。
其他一些信息:
- 字符串在容器中永远不会被修改一次
- 窗口元素永远不会改变(除了讨论的 pop 和 push)
- 窗口的大小直到运行时才知道(用户传递的东西)
- Window 永远不会改变大小,一旦在启动时初始化,它就会在整个应用程序中保持该大小。
任何建议将不胜感激,干杯大卫
【问题讨论】:
-
您也可以只使用环形缓冲区(虽然标准库中没有现成的实现,但实现起来很简单)。
-
嗯,列表或循环缓冲区都可以满足您的需求。我建议从列表开始。
-
循环缓冲区是你最好的选择
标签: c++ containers stdvector deque