【问题标题】:How c++ set/map checks the equality of keys?c++ set/map 如何检查键的相等性?
【发布时间】:2016-08-16 11:20:21
【问题描述】:

c++ set/map 如何检查键的相等性?

例如在这个例子中:

struct A
{
    int id , val;

    A( int _val = 0 , int _id = 0 ) 
    { val = _val , id = _id; }

    bool friend operator < ( const A &x , const A &y )
    {
        return x.val < y.val;
    }
};
set< A > s;

因为我们还没有编写 == 运算符?

【问题讨论】:

标签: c++ dictionary stl set


【解决方案1】:

它检查if (!(x &lt; y) &amp;&amp; !(y &lt; x))

【讨论】:

    【解决方案2】:

    operator== 未被std::set 使用。如果 !(a &lt; b) &amp;&amp; !(b &lt; a)

    ,则元素 a 和 b 被认为是相等的

    注意:如果您在与排序不同的意义上定义相等,则集合可能不合适。集合中的相等本质上意味着两个元素将在排序的项目序列中具有相同的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多