zoukankan      html  css  js  c++  java
  • STL set复杂类型操作

    以前用set的时候总是小打小闹,参数类型基本是string,int,后来遇到需要用类和结构体做参数的,如下所示:

    class CStudent
    {
    public :
     int nStudentID;
     int nAge;
    public :
     //缺省构造函数——通常为空
     CStudent() { }
     // 完整的构造函数
     CStudent(int nSID, int nA) { nStudentID=nSID; nAge=nA; }
    };
    
    set <CStudent> mapStudent;
    mapStudent.insert(CStudent(100232,42));

    然后就是一堆问题....

    后来试了好久发觉类有一定的要求,STL作为一个容器只是在调用相应的方法,set的基本要求应该是拷贝构造函数,赋值运算符重载,大于小于运算符重载,如下所示:

    class CStudent
    {
    public :
    	int nStudentID;
    	int nAge;
    public :
    	//缺省构造函数——通常为空
    	CStudent() { }
    	// 完整的构造函数
    	CStudent(int nSID, int nA) { nStudentID=nSID; nAge=nA; }
    	//拷贝构造函数
    	CStudent(const CStudent& ob) 
    	{ 
    		nStudentID=ob.nStudentID; nAge=ob.nAge;
    	}
    	// 重载“=”
    	void operator = (const CStudent& ob) 
    	{
    		nStudentID=ob.nStudentID; nAge=ob.nAge; 
    	}
    	bool operator < (const CStudent& ob) const
    	{
    		return nStudentID<ob.nStudentID;
    	}
    	bool operator >(const CStudent& ob)
    	{
    		return nStudentID>ob.nStudentID;
    	}
    
    
    };
    
    set <CStudent> mapStudent;
    mapStudent.insert(CStudent(100232,42));

    然后就没问题了。

  • 相关阅读:
    练习4.22、4.23、4.24
    练习4.20
    练习4.17、4.18、4.19
    mysql基础语句
    mysql的innodb存储引擎
    git
    mysql集群7.4.1
    批量执行命令
    cnetos 7 mariadb 集群报错分析解答
    windows_agent 添加
  • 原文地址:https://www.cnblogs.com/sdqxcxh/p/1798947.html
Copyright © 2011-2022 走看看