1.find_if仿函数
struct DEVICE_DATA
{
CString cameraIP;//热像仪IP
int userId;//ID
public:
DEVICE_DATA(int u)
{
userId = u;
}
};
class FindUserId {
private:
int m_userId;
public:
FindUserId(int uid)
{
m_userId = uid;
}
bool operator()(DEVICE_DATA data) {
return data.userId == m_userId;
}
};
//m_listDevices为vector<DEVICE_DATA>
vector<DEVICE_DATA>::iterator it = find_if(m_listDevices.begin(), m_listDevices.end(), FindUserId(userId));
if (it != m_listDevices.end())
{
//找到了
}
2. find
struct MyPointTime
{
DWORD time;
cv::Point point;
public:
//用于查找
MyPointTime(cv::Point pt, DWORD tm)
{
time = tm;
point = pt;
}
bool operator == (const MyPointTime &p) {
int dx = this->point.x - p.point.x;
int dy = this->point.y - p.point.y;
double dist = sqrt(dx*dx + dy * dy);
if (dist < 3)
{
return true;
}
return false;
}
};
//查找,m_listPoints为vector<MyPointTime>
MyPointTime myp = MyPointTime(ptGlobal, GetCurrentTime());
//根据距离判断是否为同一个点
vector<MyPointTime>::iterator result2 = std::find(m_listPoints.begin(), m_listPoints.end(), myp);
if (result2 != m_listPoints.end())
{
//找到了
}