如何限制向量的最大大小?
How to limit the maximum size of vector?
我正在尝试使用像队列这样的有限大小缓冲区在后面放置一些数字,直到它达到特定大小(例如 10),然后在添加新元素时从前面删除一个元素背面。
我为此目的使用了向量,但是在 运行 程序(在调试模式下)多次 运行 之后,突然出现堆损坏错误,例如:
Critical error detected c0000374
在运行的中间,我觉得应该是内存的问题,因为我减少vector的个数错误就消失了
到目前为止,我只是使用一个向量,每次都将新值赋给它。例如,假设代码是这样的:
#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 个元素并向其添加新元素时,第一个元素从内存中删除?
在这里使用向量是个好主意,还是我应该改用队列?
你可以这样做->
#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;
}
我正在尝试使用像队列这样的有限大小缓冲区在后面放置一些数字,直到它达到特定大小(例如 10),然后在添加新元素时从前面删除一个元素背面。
我为此目的使用了向量,但是在 运行 程序(在调试模式下)多次 运行 之后,突然出现堆损坏错误,例如:
Critical error detected c0000374
在运行的中间,我觉得应该是内存的问题,因为我减少vector的个数错误就消失了
到目前为止,我只是使用一个向量,每次都将新值赋给它。例如,假设代码是这样的:
#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 个元素并向其添加新元素时,第一个元素从内存中删除?
在这里使用向量是个好主意,还是我应该改用队列?
你可以这样做->
#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;
}