Effective STL第十九节 相等和等价的区别

来源:互联网 发布:八维网络工程学院 编辑:程序博客网 时间:2024/06/06 09:46
#include <set>#include <vector>#include <iostream>using namespace std;class mPoint{public:int x;int y;mPoint();mPoint(int tx, int ty){x = tx;y = ty;}bool operator ==( const mPoint& rhs) const{return this->x == rhs.x && this->y==rhs.y;//相等性 a.x==b.x && a.y==b.y才认为相等}};class setCmp {public:bool operator() (const mPoint& lhs, const mPoint& rhs) const{return lhs.x < rhs.x;}};void fillSet(set<mPoint,setCmp> & paraSet){paraSet.insert(mPoint(1, 2));//insert函数使用等价性来插入,在本例中如果a.x>b.x==false && a.x<b.x==false 则认为a和b等价paraSet.insert(mPoint(1, 3));//此时临时对象mPoint(1,3)不会被插入paraSet.insert(mPoint(1, 4));//临时对象mPoint(1,4)也不会插入}int main( ){set<mPoint,setCmp> mSet;fillSet(mSet);set<mPoint,setCmp>::iterator its=find( mSet.begin(),mSet.end(),mPoint(1,3));if (its!=mSet.end()){cout << "全局算法find使用使用相等性查找出的值为" << "mPoint.x=" << (*its).x << "   " << "mPoint.y=" << (*its).y << endl;}else{cout << "全局算法使用相等性查找未查找到想要的值" <<endl;}its = mSet.find(mPoint(1, 3));if (its != mSet.end()){cout << "关联性容器自带算法find使用使用等价性查找出的值为" << "mPoint.x=" << (*its).x << "   " << "mPoint.y=" << (*its).y << endl;}else{cout << "关联性容器算法使用等价性查找未查找到想要的值" << endl;}return 0;}
运行结果:


0 0
原创粉丝点击