Cha*_*nce 3 c++ performance stl comparator
当我使用==或!=运算符来比较两个集合时,该运算符是否实际上比较了两个集合的大小?我想知道我是否需要首先手动比较两种尺寸以使其更有效率,或者如果我实际上要降低其效率.我知道运算符将检查大小的相等和不等式,我只是不知道它是否会首先执行此操作.
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;
}
Run Code Online (Sandbox Code Playgroud)
是的,这是第一件检查 - 从C++ 11标准,§23.2.1表96(容器要求):
表达:
a == b
(其中,a
和b
表示类型的值X
和X
表示包含类型的对象的容器类T
)操作语义:
Run Code Online (Sandbox Code Playgroud)distance(a.begin(), a.end()) == distance(b.begin(), b.end()) && equal(a.begin(), a.end(), b.begin())