【C++】list对象中使用myclass类型的基础问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 19:18:46
书上写list不是一个有序的容器,但是在对list对象进行查找或合并是,仍然需要能够对其中的元素惊喜比较。因此你需要在类myclass中重载运算符<,>,!=和==。

——恕吾愚钝,what is the meaning of the string?

——为什么对于list对象的查找或合并也需要去重载类myclass中的运算符?

——‘查找’需要重载哪些运算符(我想应该不用四种运算符都重载完吧)?

——‘合并’需要重载哪些运算符(我想应该不用四种运算符都重载完吧)?

例如,你list里面存的是整数的时候
可以很轻松地比较哪个值小哪个值大
但是你存的是“学生”的时候
它怎么知道哪个学生大哪个学生小,或者两个学生相等呢?
比较的依据还得你自己规定,所以你要重载<,>,!=和==
要能查找,至少要重载== ,因为查找里面有if(xxx == xxx )这样的语句。
如果你用merge,至少要重载<。因为它要进行排序。(如果你用排序函数就不需要重载了)
实际中,最好你把那些都重载了,那四个,再加上<=和>=,以免以后出现问题。

what is the meaning of the string?
不知道你想问什么,string 是字符串的意思

什么对于list对象的查找或合并也需要去重载类myclass中的运算符?
list是一个模版对象,它在查找时会调用实际存储的对象的比较运行符

‘查找’需要重载哪些运算符(我想应该不用四种运算符都重载完吧)?
怎么什么查找了,普通的查找只要重载==就行了,二分查找还要重载<

合并’需要重载哪些运算符(我想应该不用四种运算符都重载完吧)?
同上,看什么样的合并了,如果不用排序,就什么也不用重载,如果是用merge合并就要重载<

要的!
一、查找
要查找到准确的位置,就要进行比较,当然不是简单的==判断,那样效率太低了,list既然是有序容器,自然用的是二分法写的查找算法(如果没有其他更加高效的算法的话),算法里面就会用到各种比较运算符.
二、合并
list是有序容器,合并之后仍旧要保持为有序的,因此合并算法因该是将一个容器的内容插入到另外一个容器中,插入的位置是需要进行查找的,可能用的是上面的查找算法,也可能是其他更有效的算法,总之,比较运算符是要全部重载的。