C++ 对于loop或std::any_of,我应该使用哪一个?

C++ 对于loop或std::any_of,我应该使用哪一个?,c++,c++11,for-loop,stl,idioms,C++,C++11,For Loop,Stl,Idioms,我无法在for循环和std::之间做出决定,例如: QString fileName=“无论什么”//可能包含sMyStringlist()的一部分的键字符串 auto anyTypeContains=[&](常量QString&categoryStr) { 对于(自动常量和键:sMyStringlist()[categoryStr]) if(fileName.contains(keyStr,Qt::case不敏感)) 返回true; 返回false; }; if(anyTypeContains

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

QString fileName=“无论什么”//可能包含sMyStringlist()的一部分的键字符串
auto anyTypeContains=[&](常量QString&categoryStr)
{
对于(自动常量和键:sMyStringlist()[categoryStr])
if(fileName.contains(keyStr,Qt::case不敏感))
返回true;
返回false;
};
if(anyTypeContains(“myCategory”))
...

QString fileName=“无论什么”//可能包含sMyStringlist()的一部分的键字符串
auto anyTypeContains=[&](常量QString&categoryStr)
{
返回标准::任何(
sMyStringlist()[categoryStr].begin(),
sMyStringlist()[categoryStr].end(),
[&](常量QString和keyStr){
返回fileName.contains(keyStr,Qt::casesensitive);
});
};
if(anyTypeContains(“myCategory”))
...

我认为for循环可能更好,因为每个人都应该熟悉它。是否有任何理由使用任何_或只是口味的问题?还有其他(更好的)选择吗?提前感谢。

< P>许多C++标准库函数(通常是在<代码> <代码> >中,以避免< <代码> >或其他循环构造> <代码>的需要。代码>标准::累积是一个早期的例子


因此,首选<代码> STD::< /COD>的YANYA,而不是循环。

< P>许多C++标准库函数(通常是在<代码> <代码> >中,以避免< <代码> >或其他循环构造> <代码>。代码>标准::累积是一个早期的例子


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

我会使用最具表现力的(
std::any_of
),每个人都应该(或变得)熟悉标准算法。使用
std::any_of
你可以提供一个添加,例如可能的并行化。在第二种情况下,不相关,lambda不应该通过常量引用接受keyStr吗?@tedlynmo:1。为标准算法编写几个容器适配器很容易,这样您就可以编写
mystd_extras::any_of(container,predicate)
@TedLyngmo:在C++20中,您可以直接使用。我会使用最具表现力的(
std::any_of
)并且每个人都应该(或成为)熟悉标准算法。使用
std::任意
可以提供一个用于添加例如可能的并行化的方法。在第二种情况下,lambda不应该通过常量引用接受keyStr吗?@TEDLYNGOM:1。为标准算法编写几个容器适配器很容易,这样您就可以编写
mystd\u extras::任意(容器,谓词)
@TedLyngmo:在C++20中,您只需使用。