• 您的位置我爱Aspx >> VC.Net >> Effective STL: Item 21:永远让比较函数对相同元素返回false
  • Effective STL: Item 21:永远让比较函数对相同元素返回false

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:48:06  关键字:
  • Effective STL: Item 21:永远让比较函数对相同元素返回false

    ss=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>

    Item 21:永远让比较函数对相同元素返回false

    让我展示些比较酷的东西。构建一个set,比较类型用的是less_equal,然后insert一个10:

    set<int, less_equal<int> > s; // s is sorted by “<=”

    s.insert(10); // insert the value 10

    现在尝试再insert一次10:

    s.insert(10);

    对于这一个insert的调用,set必须先要搞明白10是否已经位于其中。 我们知道它已经位于其中,但set可是木头木脑的,它必须执行检查。为了便于弄明白发生了什么,我们将已经在set中的10称为10A,而正试图insert的那个叫10B。

    set遍历它的内部数据结构以查找加入10B的位置。 最终,它总要检查10B是否与10A相同。 关联容器对“相同”的定义是equivalence(见Item 19)(WQ注: equivalence应指“数学相等”,two elements are equal if neither is less than the other,见《The C++ Standard Library》中文版P82,英文版电子P77;equality指“逻辑等价”,使用operator==(),见《The Standard Template Library》英文电子版P30)因此set测试10B是否数学等值于10A。 当执行这个测试时,它自然是使用set的比较函数。在这一例子里,是operator<=,因为我们指定set的比较函数为less_equal,而less_equal就是operator<=。于是,set将计算这个表达式是否为真:

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:Policy Tool — 策略文件创建和管理工具
    下一篇:获取系统当前打开的端口(tcp。udp)状态,以及连接方的ip。端口
  • 相关文章