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

问题描述 投票:0回答:1

我无法在for-loopstd :: 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-loop可能更好,因为每个人都应该熟悉它。使用any_of有什么原因吗?还是只是出于口味问题?还有其他更好的选择吗?预先感谢。

c++ c++11 for-loop stl idiomatic
1个回答
2
投票

许多C ++标准库函数(通常是<algorithm>中的那些)可以消除对for或其他循环结构的需要。 std::accumulate是一个早期示例。

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

© www.soinside.com 2019 - 2024. All rights reserved.