立即弹出错误窗口,程序崩溃等。
码:
void sort_star(vector<string>& product, vector<double>& star_rating)
{
vector<string>::iterator piter;
vector<double>::iterator cycler;
piter = product.begin();
cycler = star_rating.begin();
while (piter != product.end() && cycler != star_rating.end())
{
++piter; ++cycler;
cout << "/n|" << *piter << "|";
cout << *cycler << " Stars";
}
}
是的,所以我很新,对C++不太了解。一个很好的解释将不胜感激!
最佳答案
在while循环中,您在使用迭代器之前先增加它们
...
while (piter != product.end() && cycler != star_rating.end()) {
++piter; ++cycler; <--- HERE
这意味着两件事:
FIX 在循环结束时递增,如下所示:
while (piter != product.end() && cycler != star_rating.end()) {
cout << "/n|" << *piter << "|";
cout << *cycler << " Stars";
++piter; ++cycler;
}
关于c++ - 循环迭代器时引发“Debug assertion failed”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53774436/