BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #30178同步于 2009/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[新手求助]请大家帮忙看看

jkice
2009/10/21镜像同步1 回复
初学,看c++的书,做课后题,写了一个函数,要求实现一句话的轮转,就是 输入a b c,输出a b c,b c a,c a b,我的代码如下 #include<vector> #include<string> using namespace std; vector<string> turnaround(vector<string>& phrase) { typedef vector<string>::iterator ve_it; vector<string> turned; string::size_type count = 0; vector<string>::size_type size = phrase.size(); vector<string>::iterator iter = phrase.begin(); for (ve_it itera = phrase.begin(); itera != phrase.end(); ++itera) { turned.push_back(*itera); } while (iter != phrase.end()) { phrase.push_back(*iter); //1 iter = phrase.erase(iter); //2 for (ve_it itera = phrase.begin(); itera != phrase.end(); ++itera) { turned.push_back(*itera); } ++count; if(count == size - 1) break; } return turned; } 问题是当输入的单词个数为2的n次方时,程序出错,自己debug看了一下,当输入单词个数不是2的n次方个时,执行过1后,iter还指向第一个单词,但是,是2的n次方时,执行完1,iter就变得无效了(不知道这么说对不对,在vc6.0看就变成0xdddddddd了),之后再执行2就出错了,不知道问什么,请大家看看,谢谢
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
jkice机器人#1 · 2009/10/22
把vector都改成list,函数功能正常实现,但是原因不明