Vector 为什么擦除函数会出现运行时错误? 向量a; a、 推回(0); int n=a.size(); int-cnt=0; 对于(自动itr=a.begin();itr!=a.end();itr++) { 如果(*itr==0) { cnt++; a、 擦除(itr); } }
代码正在插入除零以外的数字。 由于某种原因,Vector 为什么擦除函数会出现运行时错误? 向量a; a、 推回(0); int n=a.size(); int-cnt=0; 对于(自动itr=a.begin();itr!=a.end();itr++) { 如果(*itr==0) { cnt++; a、 擦除(itr); } },vector,stl,Vector,Stl,代码正在插入除零以外的数字。 由于某种原因,a.erase(itr)行给出了运行时错误。 请提供帮助。使用erase可以修改向量,使迭代器无效,这是一个稍微修改代码的解决方案: vector<int> a; a.push_back(0); int n = a.size(); int cnt = 0; for (auto itr = a.begin(); itr != a.end(); itr++) { if(*itr == 0) { cnt++;
a.erase(itr)
行给出了运行时错误。
请提供帮助。使用erase可以修改向量,使迭代器无效,这是一个稍微修改代码的解决方案:
vector<int> a;
a.push_back(0);
int n = a.size();
int cnt = 0;
for (auto itr = a.begin(); itr != a.end(); itr++)
{
if(*itr == 0)
{
cnt++;
a.erase(itr);
}
}
向量a;
a、 推回(0);
int n=a.size();
int-cnt=0;
自动itr=a.begin();
while(itr!=a.end())
{
如果(*itr==0)
{
cnt++;
itr=a.擦除(itr);
}
其他的
++itr;
}
注意,n和count的正确类型是size\u type
而不是int
vector<int> a;
a.push_back(0);
int n=a.size();
int cnt=0;
auto itr=a.begin();
while (itr != a.end())
{
if(*itr == 0)
{
cnt++;
itr = a.erase(itr);
}
else
++itr;
}