【发布时间】:2012-02-16 18:20:26
【问题描述】:
当我使用 == 或 != 运算符比较两个集合时,该运算符实际上是否首先比较两个集合的大小?我想知道我是否需要先手动比较这两种尺寸以提高效率,或者我是否真的会降低效率。我知道相等和不等运算符会检查大小,我只是不知道它是否会先这样做。
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;
}
【问题讨论】:
-
不需要。如果它们的大小不同,则它们在逻辑上是不等价的。
-
@MooingDuck,我试图说明不相等的大小是不相等的,我是从效率的角度讲的。
I know the equality and inequality operators will check size, I just don't know if it will do so first. -
读者/作者练习:在不使用三元运算符的情况下将您的函数(有或没有大小检查)重写为仅一行。
-
@Chance:别担心。相信实施者,他们往往比你更擅长这些事情。如果它更快,他们可能做到了。
标签: c++ stl comparator performance