关于stl的容器的一些有关问题

关于stl的容器的一些问题
[code=C/C++]
#include <iostream>
#include   <LIST>
//#include   <algorithm>
#include   <STRING>

using   namespace   std;

struct   A{
char   ch;
int   in;
}a;


int   main()
{


list   <A>   list1;
list   <A>   ::iterator   iter;

while(1)
{
cout < < "put_ch " < <endl;
cin> > a.ch;
if(a.ch!= 'w ')
{
cout < < "put_in " < <endl;
        cin> > a.in;
}
else  
break;

list1.push_back(a);
}

  iter=list1.begin();
//iter=list1.begin()+2;         //我想定位到begin后面两个的位置,不能直接用“list1.begin()+2”的形式,会报错
//iter=find(list1.begin(),list1.end,2)       //用find函数来定位,也是不行的

for(int   i=0;i <3;i++)         //于是我很无奈的想到了用循环自加来定位……
  {
  ++iter;
  }

list1.erase(iter);

for(iter=list1.begin();iter   !=list1.end();++iter)
cout < <(*iter).ch < < "\t " < <(*iter).in < <endl;


return   0;
}

[/code]

        请重点看我用“//”注释起来的地方,因为参数是一个自定义类型,迭代器就不能用加法了,find函数也不能用了。编译的时候提示说什么运算符没有重载什么的。搞不懂
        请问,怎么样可以让我用“//”注释起来的部分能正常通过编译,正常使用啊。

------解决方案--------------------
因为你的A类没有重载 == 运算符.

而且 2 是int 类型的,应该用 A类型的 来作为find 的操作数.