Joh*_*0te 0 c++ stl data-structures
如果我正在制作类似撤销堆栈的东西,并且我只想支持30次撤消操作,那么拥有最大深度为30的堆栈会很不错.
你显然不希望堆栈在这一点上限制添加,你只是希望它在添加31st时丢弃最底层的元素.
我知道我可以通过列表模仿这种功能,但我想知道是否有办法让STL实现它,或者是否有其他预先实现的选项?
我会使用一个循环链接列表(或只是一个循环使用的缓冲区)与30个节点(或元素).您将在同一节点处开始顶部和底部指针,并在添加元素时前进顶部,并在删除元素时将其退回.如果你添加了很多元素,你到达了底部(你已经绕过循环)然后你推进顶部和底部指针,使它们不会相互交叉,并覆盖底部下面的那个指针(顶部指针现在指向的位置).
另一种方法是分配一个数组(或环绕a vector),而不是动态分配内存,并在你想要推进索引时将索引模型化30.
无论哪种方式,除了在开始之外你永远不必分配或释放内存,你可以很好地处理溢出.您可以在维基百科页面上阅读有关循环缓冲区的详细信息.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |