这是个自定义动态容器吗

Email144 2008-12-23 11:49:11

template < typename T, int N >
class WrapHistory
{
protected:
void increase(int& idx) { ++idx; if(idx==N) idx=0; }
void decrease(int& idx) { --idx; if(idx<0 ) idx=(N-1); }
public:
WrapHistory() : readpos(0), writepos(0) {}
void add(const T& entry)
{
increase(writepos);
entries[writepos]=entry;
reset();
}
void reset(){ readpos = writepos; }
T& read (){ return entries[readpos]; }
void prev (){ decrease(readpos); if(readpos==writepos) increase(readpos); }
void next (){ if(readpos!=writepos) increase(readpos); }
int getnum()
{
return writepos;
}
protected:
int readpos;
int writepos;
T entries[N];
};
WrapHistory<string,80> lines;

如果是,我想写个清空这个容器的函数该怎么写呢,就像vector的erase那样的!
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Email144 2008-12-24
  • 打赏
  • 举报
回复
给你分了!谢谢
xiaoyisnail 2008-12-24
  • 打赏
  • 举报
回复
首先这个不是什么动态容器,空间不会动态增长,entries也不是在堆里动态分配的,所以我觉得erase的话只要重置readpos和writepos为0即可

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧