性能/安全检查是否存在差异? 使用
的矢量元素VS。
1。 for loop
// 1. for loop
for (llvm::SmallVectorImpl<myClass>::const_iterator it = v.begin();
it != v.end();
++it) {
if (it->getName() == Name) {
// found element
// do smth...
break;
}
}
VS
2。 STD:find_if
// 2. find if
llvm::SmallVectorImpl<myClass>::const_iterator it
= std::find_if(v.begin(),
v.end(),
StringCheck<llvm::StringRef>(Name));
if (it != v.end()) {
// found element
// do smth...
}
// StringCheck defined in header...
template <class T>
struct StringCheck{
StringCheck(const T &s) : s_(s) {}
bool operator()(const myClass &obj) const
{
return obj.getName() == s_;
}
private:
const T &s_;
};
答案 0 :(得分:0)
找到匹配后,你的for循环继续迭代。如果可能有多个匹配并且你想为每个匹配运行代码,那么这可能是件好事,如果你想在找到匹配后停止并且在大容器中早期找到匹配,则这是一件坏事。