使用标准模板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