日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 如何看待STL的stack?

Home Forums 《冒号课堂》讨论区 如何看待STL的stack? Reply To: 如何看待STL的stack?

#1382
hui
Keymaster

这个并不奇怪。首先,如果只在乎标识,直接比较两个container对象的指针(地址)即可,重载==进行内容比较是额外的福利。其次,即使对同一个类型的container,尽管是引用语义,但在某些场合也可能非常关注其内容。比如,Set是一种container,对于两个Set对象,我们可能需要比较它们内容之间的关系,如用operator==来判断两个集合是否值相同,用operater<和operator>结合不同的comparator来进行子集排序、字典排序等等。这就好比两个不同的人,本身应该是引用语义的,但有时我们会比较他们的值,比如身高、体重、速度等等,甚至在一定context下只要我们所关心的值是相等的,便认为他们是可以互换的(interchangeable),此时实际上已经是值语义了。

换言之,一个类型究竟是引用语义还是值语义,不仅与类型本身有关,也与所用的场合有关。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)