为什么新人如此郁闷啊!编程!
郁闷!
比如说 有两个vector 一个存指数,一个存系数
我只能写成这样........
第一个版本可以运行 ,但它不能识别 如输入 1x^1+2x^1 这种指数相同类型 它不能输出3x^1 而输出1x^1+2x^1
cpolynomial::cpolynomial(const vector<double>&dvec,const vector<int>&ivec)
{
cnode *T;
vector<double>::const_iterator it=dvec.begin();
vector<double>::const_iterator it_end=dvec.end();
vector<int>::const_iterator iter=ivec.begin();
for(;it!=it_end;++it,++iter)
{
T=new cnode(*it,*iter);
_polylist.push_back(*T);
}
_polylist.sort(greater<cnode>());
}
第2个版本夭折......我是想利用2次循环 合并指数相同的,可是.........
cpolynomial::cpolynomial(const vector<double>&dvec,const vector<int>&ivec)
{
cnode *T;
vector<double>::const_iterator it1=dvec.begin();
vector<double>::const_iterator it2=dvec.begin();it2++;
vector<double>::const_iterator it_end=dvec.end();
vector<int>::const_iterator iter1=ivec.begin();
vector<int>::const_iterator iter2=ivec.begin();iter2++;
vector<int>::const_iterator iter_end=ivec.end();
for(;iter1!=iter_end;++iter1,++it1)
for(;iter2!=iter_end;++it2,++iter2)
{
if(*iter2==*iter1){
(*it1)+=*it2;
dvec.erase(it2);
ivec.erase(iter2);
}
}
for(it1=dvec.begin(),iter1=ivec.begin();it1!=it_end;++it1,++iter1)
{
T=new cnode(*it1,*iter1);
_polylist.push_back(*T);
}
_polylist.sort(greater<cnode>());
}
哪位大师帮忙解决一下.....?
问题点数:20、回复次数:6Top
1 楼chllcy(搬张小板凳,听星星们的高见)回复于 2006-12-01 19:57:56 得分 0
哪位大哥帮帮忙啊!!!~~还是我表达有问题........Top
2 楼htqx(航天奇侠)回复于 2006-12-03 23:46:17 得分 15
删除元素时, iterator 也同时失效。
it2= dvec.erase(it2);
iter2 = ivec.erase(iter2);
Top
3 楼Bennyatt()回复于 2006-12-04 11:45:30 得分 2
如果你是新人
为什么用这么复杂的表达方式??
为什么不写的醒目一点??Top
4 楼chllcy(搬张小板凳,听星星们的高见)回复于 2006-12-04 12:31:52 得分 0
..................晕 老师要求用STL .....我不太熟悉.....我只是想解决一下输入 1x^1+2x^1 这种指数相同类型 它不能输出3x^1 而输出1x^1+2x^1
目前的
cpolynomial::cpolynomial(const vector<double>&dvec,const vector<int>&ivec)
{
cnode *T;
vector<double>::const_iterator it=dvec.begin();
vector<double>::const_iterator it_end=dvec.end();
vector<int>::const_iterator iter=ivec.begin();
for(;it!=it_end;++it,++iter)
{
T=new cnode(*it,*iter);//将指数和系数传递给cpolynomial的list<cnode>_polylist
_polylist.push_back(*T);//_polylist是cpolynomial私有的 list<cnode>_polylist; cnode是个类,有两个私有成员 double _coef 保存系数; int _expn 保存指数的;
}
_polylist.sort(greater<cnode>());//对输入的按指数降幂排序
}
就是我想解决如果vector里出现指数相同的两项或几项,输出结果应该是一项,而我这个却是输入有几项指数相同的 输出几项.....Top
5 楼ReverseEngineering(★给我一杯壮阳水☆换我一夜不下垂★男人阳萎不是罪☆)回复于 2006-12-25 20:53:19 得分 2
太复杂了!Top
6 楼andyhuang_one(Clownfish Nemo)回复于 2006-12-26 09:21:08 得分 1
ding~~Top




