代码之家  ›  专栏  ›  技术社区  ›  Martin Ba

为定时采样命名循环缓冲区类?

  •  0
  • Martin Ba  · 技术社区  · 14 年前

    鉴于:

    class Buf {
      // has fixed buffer size, forming a cyclic buffer tor t->v pairs
      void add(time_type t, value_type v); // adds value v at time t, overwriting the oldest buffered value
      value_type get(time_type t); // returns the value at time t1 for t1 <= t < t2 (for t1 and t2 datapoints in the buffer)
      ...
    };
    

    我承认这是主观的,但它不应该导致或需要扩大讨论的答案,所以我希望这是可以的。:-)


    RecentValueBuffer 因为类将(最近的)时间戳映射到与这些时间戳对应的值。我对“最近”有点不确定,因为这似乎意味着样本的时间范围/数量很短。

    4 回复  |  直到 14 年前
        1
  •  3
  •   mtreit    14 年前

    您应该扪心自问,类的用户是否需要知道或关心内部实现是一个循环缓冲区。如果没有,请给它起个名字,让它明白这个类的目的是什么:也许是 TimeMap 因为它似乎是将值映射到时间上的离散点。然后,您始终可以将内部实现更改为其他内容(例如,哈希表),而无需更改类的名称。

    如果对语义很重要的是它始终是一个循环缓冲区,那么考虑将它作为一个通用容器 CircularBuffer 或者类似的,使用模板来定义键和值的类型。

        2
  •  1
  •   Tony Delroy    14 年前

    • 固定尺寸
    • 圆形的
    • 最近
    • 最后一个

    选择一个或组合任何你喜欢的,直到你对结果满意为止。

        3
  •  0
  •   Mud    14 年前

    CircularBuffer or RingBuffer

    我最近写了一篇关于保持运行平均值的文章(称为running average),并把我的评论称为“环形缓冲区”,所以这显然是我的偏好。)可能是因为它比较短。

        4
  •  0
  •   Steve Townsend    14 年前

    你可以使用符合STL的 boost::circular_buffer

    推荐文章