使用标准模板find函数来对结构体容器进行查找

最近在写一个项目,项目中需要获得类下面的所有对象,所以我采用了map容器,以string为关键字,list容器为内容来进行查找,而list中是一些struct结构体。由于在插入操作的时候需要判断该对象是否存在,所以需要对list的对象进行查找。我不太喜欢用ForEach的方法,所以采用了标准模板find函数,而find函数要求对象必须能够支持==,所以事先必须重载,这个很容易忘记。

贴代码:

 1 #include "iostream"
 2 #include "vector"
 3 #include "algorithm"
 4 using namespace std;
 5  
 6 struct st {
 7     int a;
 8     int b;
 9     st(int _a = 0, int _b = 0) : a(_a), b(_b) {}
10 };
11  
12 bool operator == (const st& left, const st& rigt) 
13 {
14     return left.a == rigt.a && left.b == rigt.b;
15 }
16  
17 int main() 
18 {
19     vector<st> vst;
20  
21     vst.push_back(st(0, 1));
22     vst.push_back(st(0, 2));
23     vst.push_back(st(1, 2));
24     vst.push_back(st(5, 1));
25     vst.push_back(st(5, 5));
26  
27     st t = st(5, 1);
28  
29     vector<st>::iterator ifind = find(vst.begin(), vst.end(), t);
30     if (ifind != vst.end())
31     {
32         cout<<"finded"<<endl;
33     }
34  
35     return 0;
36 }

转载请注明出处:http://www.cnblogs.com/fnlingnzb-learner/p/5889026.html

原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/5889026.html