📄 buffer.h
字号:
/*
以下是使用环状数组实现的队列来实现的缓冲区类
成员变量:
Elem * buf; //存放元素的数组
front, rear:队列的头尾指针
n:当前元素数目
成员函数:
Buffer():构造函数
~Buffer():析构函数
isEmpty():判断缓冲区是否为空
isFull():判断缓冲区是否为满
insert():向缓冲区内插入元素
read():缓冲区弹出一个元素
flush():将缓冲区内的内容放入文件中并将缓冲区的状态置回空
*/
template <class Elem>
class Buffer
{
public:
Elem * buf;
int front;
int rear;
int n;
Buffer()
{
buf = new Elem [MEMORY2];
front = 0;
rear = 0;
n = 0;
}
~Buffer(){delete []buf;}
void flush(FILE * outputFile);
bool read(Elem & x);
bool insert(Elem & x);
bool isEmpty(){return (!n);}
bool isFull()
{
if(n==MEMORY2)
return true;
else return false;
}
};
template <class Elem>
void Buffer<Elem>::flush(FILE * outputFile)
{
int temp = front;
for(int i = 0; i < n; i++)
{
fprintf(outputFile,"%s", buf[temp % MEMORY2].content);
temp++;
}
n = 0;
front = 0;
rear = 0;
}
template <class Elem>
bool Buffer<Elem>::read(Elem & x)
{
if(!isEmpty())
{
x = buf[front];
front = (front+1)%MEMORY2;
n--;
return true;
}
else
return false;
}
template <class Elem>
bool Buffer<Elem>::insert(Elem &x)
{
if(!isFull())
{
buf[rear] = x;
rear = (rear+1)%MEMORY2;
n++;
return true;
}
else
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -