c++ - STL 是否首先设置相等运算符检查大小?

标签 c++ stl comparator performance

当我使用 == 或 != 运算符比较两个集合时,该运算符实际上是否首先比较两个集合的大小?我想知道我是否需要先手动比较这两种尺寸以提高效率,或者我是否真的会降低效率。我知道相等和不等运算符会检查大小,我只是不知道它是否会先这样做。

bool checkEqualTo( const set<int> & set1, const set<int> & set2 )
{
    // Should I include comparison of sizes first?
    if ( set1.size() != set2.size() )
    {
       return false;
    }
    if ( set1 != set2 )
    { 
        return false;
    }
    return true;
}

最佳答案

是的,这是首先检查的内容 — 来自 C++11 标准,§23.2.1 表 96(容器要求):

Expression:

     a == b (where a and b denote values of type X and X denotes a container class containing objects of type T)

Operational semantics:

   distance(a.begin(), a.end()) == distance(b.begin(), b.end()) &&
     equal(a.begin(), a.end(), b.begin())

关于c++ - STL 是否首先设置相等运算符检查大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316795/

相关文章:

c++ - Qt Designer 代码生成问题

c++ - 为什么重载!运营商需要一个常量返回

c++ - googletest - 找出意外调用的位置

c++ - DllGetClassObject是在C++静态初始化之前还是之后调用

c++ - 映射键是 C++ 中多个值的组合

c++ - "Flattening"std::set<std::string> 用于存储和比较?

java - Eclipse 不接受集合排序

java - 接收比较器类类型

C++ STL 字符串流直接缓冲区访问

java - 比较器中的 FIFO 决胜局?