gpt4 book ai didi

c++ - 按类属性(例如名称)搜索类对象的 std::vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:25 26 4
gpt4 key购买 nike

性能/安全检查是否有任何差异 vector 元素使用

  1. for 循环与迭代器

对比

  1. std:find_if(...)?

<强>1。 for循环

// 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;
}
}

对比

<强>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_;
};

最佳答案

您的 for 循环在找到匹配项后继续迭代。如果可以进行多个匹配并且您想为每个匹配运行代码,这可能是一件好事;如果您想在找到匹配后停止并且在大型容器中尽早找到匹配,这可能是一件坏事。

关于c++ - 按类属性(例如名称)搜索类对象的 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38831192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com