For-loop或std::any_of,我应该使用哪一个?

For-loop or std::any_of, which one should I use?

本文关键字:我应该 哪一个 of std any For-loop      更新时间:2023-10-16

我无法在for循环std::any_of之间做出决定,例如:

QString fileName = "Whatever";  // might contain a key-string which is part of sMyStringlist()
auto anyTypeContains = [&](const QString& categoryStr)
{
for(auto const &keyStr : sMyStringlist()[categoryStr])
if(fileName.contains(keyStr, Qt::CaseInsensitive))
return true;
return false;
};
if(anyTypeContains("myCategory"))
...

QString fileName = "Whatever";  // might contain a key-string which is part of sMyStringlist()
auto anyTypeContains = [&](const QString& categoryStr)
{
return std::any_of(
sMyStringlist()[categoryStr].begin(),
sMyStringlist()[categoryStr].end(),
[&](const QString& keyStr){
return fileName.contains(keyStr, Qt::CaseInsensitive);
});
};
if(anyTypeContains("myCategory"))
...

我认为for 循环可能会更好,因为每个人都应该熟悉它。使用any_of有什么理由还是只是品味问题?还有其他(更好的(选择吗?提前谢谢。

许多C++标准库函数(通常是<algorithm>中的函数(都是为了避免对for或其他循环结构的需求。std::accumulate是一个早期的例子。

因此,更喜欢std::any_of而不是循环。