当我使用 == 或 != 运算符比较两个集合时,该运算符实际上是否首先比较两个集合的大小?我想知道我是否需要先手动比较这两种尺寸以提高效率,或者我是否真的会降低效率。我知道相等和不等运算符会检查大小,我只是不知道它是否会先这样做。
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
(wherea
andb
denote values of typeX
andX
denotes a container class containing objects of typeT
)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/