stl find()???

[复制链接]
查看11 | 回复3 | 2009-5-5 12:25:55 | 显示全部楼层 |阅读模式
我定义了一个结构数组里面有两个int型变量,我想用stl中的find()函数来查找某一个数
比如:
struct my_struct{
int a;
int b;
};
我想查找a=100的数,怎么办,请大侠帮帮忙
如果数组里面有好几个a=100的元素,怎样把他们都找出来???

回复

使用道具 举报

千问 | 2009-5-5 12:25:55 | 显示全部楼层
find()只能找出与之匹配的第一个元素的地址,而且find()中的参数只能是整个元素(如find(100)//整型,find(my)//my_struct类型 所以找首元素只能用find_if():[编写必要的一元函数对象(function object)] 如果要找符合的所有元素,用replace_copy_if(), remove_if(), remove_copy_if() 等函数进行需要的转换,下面是整个程序: 其中用了两个function object,分别是等于与不等于目标值。本来写一个就行了,第二个用not1(),但是我写的函数对象不是模板类,所以不能用(visual studio 2008)。 之所以将函数对象定义为非模板...
回复

使用道具 举报

千问 | 2009-5-5 12:25:55 | 显示全部楼层
find好像一般用来找容器里面的直接相等的变量 解决办法: 1.不用find() 自己写一个O(n)的算法 2.重载这个结构体的 = 运算 然后定义一个a=100的my_struct对象ms find(vct.begin(),vct.end(),ms);find()好像只能找到第一个返回迭代器全部找出来我不太清楚查查MSD...
回复

使用道具 举报

千问 | 2009-5-5 12:25:55 | 显示全部楼层
用find_if,自己写个条件函数: #include #includeusing namespace std; struct my_struct{ int a; int b; }; bool pred(my_struct p) { return p.a ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行