如何限制向量的最大大小?

时间:2019-08-12 20:41:42

标签: c++ memory vector queue buffer

我正在尝试使用有限大小的缓冲区(例如队列)将一些数字放在后面,直到达到特定大小(例如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个元素并添加新元素时,第一个元素从内存中删除?

在这里使用向量是个好主意,还是应该使用队列?

1 个答案:

答案 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;
}