永发信息网

帮我给c++程序加注释(注明每句的作用,例:la.clear(); //移除所有元素,清空容器)

答案:1  悬赏:0  手机版
解决时间 2021-02-15 06:55
  • 提问者网友:富士山上尢
  • 2021-02-14 14:21
#include
#include
#include //调用begin()、end()、clear()等函数
#include
using namespace std;
class _Item: public pair < int,int >
{
public:
_Item(): pair < int,int > (int(),int()){}
_Item(int a,int b): pair < int,int > (a,b){}
_Item(const _Item &rhs): pair < int,int > (rhs.first,rhs.second){}
inline bool operator < (const _Item &other)const
{
return second < other.second;
}
inline bool operator==(const _Item &other)const
{
return second==other.second;
}
inline bool operator > (const _Item &other)const
{
return second > other.second;
}
inline void operator+=(const _Item &other)
{
first+=other.first;
}

inline void operator*=(const _Item &other)
{
first*=other.first;
second+=other.second;
}
void operator=(const _Item &other)
{
first=other.first;
second=other.second;
}
friend istream &operator>>(istream &is,_Item &it)
{
is>>it.first>>it.second;
return is;
}
friend ostream &operator<<(ostream &os,const _Item &it)
{
if(it.first > 0)
os<<"+";
os< cout<<"次方";
return os;
}
};
class EqualZero
{
public:
inline bool operator()(const _Item &it)const
{
return it.first==0;
}
};
typedef list < _Item > List;
typedef List::iterator iList;
void InputList(List &la)
{
la.clear(); //移除所有元素,清空容器
iList il;
_Item temp;
cin>>temp;
temp;
while(temp.first!=0||temp.second!=0)
{
if(la.end()!=(il=find(la.begin(),la.end(),temp)))//begin()返回一个双向迭代器,指向第一个元素.end()返回一个双向迭代器,指向最后一个元素之后
{
*il+=temp;
}
else
{
la.push_back(temp);//在temp位置插入元素,并返回新元素位置
}
cin>>temp;
}

la.sort();
}
void ShowList(List &la)
{
if(la.empty())
return ;
iList il=la.begin();
cout<first<<"X的"<second;
cout<<"次方";
++il;
while(il!=la.end())
{
cout<< *il;
++il;
}
cout<}

一篇发布下了,还有这部分。p.s.:cout不用注释了。
List AddList(List &la,List &lb)
{
if(la.empty())
return lb;
else if(lb.empty())
return la;
List lc(la);
iList ilb,ilc;
for(ilb=lb.begin();ilb!=lb.end();++ilb)
{
ilc=lc.begin();
while(ilc!=lc.end()&& *ilc < *ilb)
++ilc;
if(ilc==lc.end())
lc.push_back(*ilb);//在尾部添加一个*lib的副本
else if(*ilc== *ilb)
*ilc+= *ilb;
else
lc.insert(ilc, *ilb);//在lic位置插入*lib的副本,并返回新元素位置
}

return lc;
}
List MulList(List &la,List &lb)
{
List lc;
iList ilb,ilt;
for(ilb=lb.begin();ilb!=lb.end();++ilb)
{
List temp(la);
for(ilt=temp.begin();ilt!=temp.end();++ilt)
{
*ilt*= *ilb;
}
lc=AddList(lc,temp);
}
return lc;
}
最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-02-14 14:30
我大体看了下,具体每个语句给你解释是不太可能,但是可以看得出你程序有几个大的功能,一是:对操作符的重载,operator < 一直到operator*= 这些都是对operator 后的操作符进行重新定义(也可以这么说)就好比 “+”我们常规是数值加减,在这里它重载定义"+"该怎么使用;二是:堆栈的使用InputList(List &la) 是通过指针la传入变量,然后排序la.sort();再后是显示出来ShowList(List &la) 当然这期间还用了插入函数insert(ilc, *ilb);//等等。List MulList(List &la,List &lb) 是使用你重新重载的MUL方法。可是没发现你的MAIN函数。也许是你写不下了。我建议你去看下c++的重载函数和友元函数这章内容。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯