我正在尝试使用有限大小的缓冲区(例如队列)将一些数字放在后面,直到达到特定大小(例如10),然后在向后添加新元素时从前面删除一个元素
我为此使用了一个向量,但是在几次运行程序(在调试模式下)后,突然出现堆损坏错误,如:
检测到严重错误c0000374
在运行过程中,我认为这应该与内存问题有关,因为当我减少向量数量时,错误就会消失。
到目前为止,我只是使用一个向量,每次都将新值放入其中。例如,假设代码是这样的:
#include <iostream>
using namespace std;
vector<int> myvec;
int i = 0;
int main()
{
while(True) {
myvec.push_back(i);
i++;
}
return 0;
}
如何将myvec
的大小限制为10,以便当它包含10个元素并添加新元素时,第一个元素从内存中删除?
在这里使用向量是个好主意,还是应该使用队列?
答案 0 :(得分:2)
您可以执行类似以下操作->
#include <iostream>
using namespace std;
vector<int> myvec;
int i = 0;
int main()
{
while(True) {
if(myvec.size()==10)
{
myvec.pop_back();
}
myvec.push_back(i);
i++;
}
return 0;
}