请问下,find命令如何使用在LIST中。

sno_guo 2012-06-12 02:41:59


大家好,想练习下下面这个这个代码,发现在编译的时候总是出错,请问下为什么:
如果把list<T> 中的T 换成int或string都可以,但自己定义的结构体或类,就不行,请问下为什么,谢谢了
#include <list>
#include <algorithm>
#include <iostream>

typedef struct __numTest
{
int v1;
int v2;
}numTest;

int main( )
{
using namespace std;
numTest n1;
numTest n2;
numTest n3;
numTest n4;

n1.v1=0;
n1.v2=1;

n2.v1=10;
n2.v2=11;

n3.v1=14;
n3.v2=16;

n4.v1=20;
n4.v2=24;

list <numTest> L;
list <numTest>::iterator Iter;
list <numTest>::iterator result;
numTest test;

L.push_back( n1 );
L.push_back( n2 );
L.push_back( n3 );
L.push_back( n4 );


cout << "L = ( " ;
for ( Iter = L.begin( ) ; Iter != L.end( ) ; Iter++ )
{
test=*Iter;
cout << test.v1 << " ";

}
cout << ")" << endl;

result = find( L.begin(), L.end(), n4); //总是在这里出错,请问下为什么,谢谢
if ( result == L.end() )
cout << "There is not in list L." << endl;
else
{
// result++;
test=*result;
cout << "There is in list L and it is"
<< " v1 : " << test.v1 << "." << endl;
}
}
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sno_guo 2012-06-14
  • 打赏
  • 举报
回复
谢谢大家,就是没有重载“==” ,谢谢了
iamzhaiwei 2012-06-12
  • 打赏
  • 举报
回复
楼主没有对numTest类重载相等操作符
qingcairousi 2012-06-12
  • 打赏
  • 举报
回复
你没为你的结构体重载 operator<
如果我没记错的话有这个就行了。
a == b 等价于 !(a < b) && !(a > b)
Nosky100 2012-06-12
  • 打赏
  • 举报
回复
numTest没有重载==操作符吧?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧