2 sinat 25885723 sinat_25885723 于 2015.06.08 13:10 提问

c++,list里面内容,不知错在哪里,求解答 5C

#include "stdafx.h"
#include
#include
//#include
#include
using namespace std;
void unio(list &la, list lb);
typedef list intlist;
int main()
{
intlist LA = {3,5,8,11};
intlist LB = { 2,6, 8, 9,11,15,20 };
unio(LA,LB);
intlist::iterator it;
for (it = LA.begin(); it != LA.end(); it++)
cout << *it << " " << endl;
system("pause");
return 0;
}
void unio(intlist &la, intlist lb)
{
auto la_len = la.size();
auto lb_len = lb.size();
intlist::iterator rit;
for (rit = lb.begin(); rit != lb.end();rit++)
{
intlist::iterator it = find(la.begin(),la.end(),rit);
if (!*it)
{
la.push_back(*rit);
}
}

}
错误 1 error C2678: 二进制“==”: 没有找到接受“int”类型的左操作数的运算符(或没有可接受的转换) c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility 3026 1 table
报了这样的错误,求大神解答

5个回答

yangbo50304
yangbo50304   2015.06.08 13:30

if (!*it)
{
la.push_back(*rit);
}


这句错了,*it是个int型的,所以不能做bool的判断,修改成
if(it!=la.end())


liqiongfan
liqiongfan   2015.06.08 15:17

#include
#include
using namespace std;

typedef list intlist;
void unio(intlist &la, intlist lb);

int main()
{
intlist LA = { 3, 5, 8, 11 };
intlist LB = { 2, 6, 8, 9, 11, 15, 20 };
unio(LA, LB);
intlist::iterator it;
for (it = LA.begin(); it != LA.end(); it++)
cout << *it << " " << endl;
system("pause");
return 0;
}

void unio(intlist &la, intlist lb)
{
intlist::iterator rit;
for (rit = lb.begin(); rit != lb.end(); rit++)
{
intlist::iterator it = find(la.begin(), la.end(), *rit);
if (it == la.end())
{
la.push_back(*rit);
}
}
}

1、list容器是一个有模版参数的类,所以定义的时候需要加上模版参数,
list 而不是type list intlist,必须是:
type list intlist
2、find()函数的返回值是找到的值,如果没有找到的话就是容器的结尾:end()。
因此
if(!*it){
}
应该更改为:
if(it == la.end()){
la.push_back(*rit);
}


monaso
monaso   2015.06.08 15:44

1、list容器是一个有模版参数的类,所以定义的时候需要加上模版参数,
2 , if (!*it)
{
la.push_back(*rit);
}

find()函数的返回值是找到的值,如果没有找到的话就是容器的结尾:end()。
因此改为
if(it!=la.end())

fcxxxer
fcxxxer   2015.06.08 23:56

将if (!*it)改成if(it!=la.end())就可以了,it是迭代类型(iterator)

datou431
datou431   Rxr 2015.06.09 16:13

if (!*it)改成if(it!=la.end())

Csdn user default icon
上传中...
上传图片
插入图片