调试发生错误的语句为findterm函数中断点所示的位置。
findterm的函数的参数string s为45×5+23×3-12x+1这样形式的一段字符串(本人调试时用的即左侧给出的这一段),i,j分别为s的iterator,在调用这个函数之初,i与j是相等的。
其中find_if的predicator是ifoprt,即第二张图片给出。
运行到第一个find_if时,调试报错,string iterator incompatible.
没有搞清楚是哪里错了,也不知道该怎么去找错误。
希望能得到指点。
解决方案
5
把完整的测试代码发上来看一下,本人没有发现报错。个人估计你的iterator 不是同一个string的。
15
讨厌贴的代码图片!本人要改你的代码,抄都不好抄。
最简单的改法是把最后string s改成string &s就可以了。
你代码里面没有改i,j,s,所以最好用const的。
最简单的改法是把最后string s改成string &s就可以了。
你代码里面没有改i,j,s,所以最好用const的。
string findterm(string::const_iterator i, string::const_iterator j, const string & s);
40
只有属于同一个容器的迭代器才能相互比较。(对于end存在例外)
string s在传参的过程中经过了复制,不再是i,j所属的容器了。
string s在传参的过程中经过了复制,不再是i,j所属的容器了。