c++ - For-loop 或 std::any_of,我应该使用哪一个?
问题描述
我无法在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
而不是循环。
推荐阅读
- node.js - Docker-Compose 文件无效
- sql - SQL count products
- python - for循环中的多个变量的解包错误
- mpi - 什么是一组一致的英特尔 HPL 选项?
- azure - 带有 docker 和 python3 的天蓝色机器
- php - Wordpress spl_autoload_register 不适用于 wordpress
- swift - 喜欢不适用于俄罗斯符号吗?(斯威夫特,SQLite)
- css - 如何在 ProfilePage.jsx 文件中的 ReactJS 中对齐我的图像?以及如何添加双边框?
- python - 使用 grep 或 awk 仅提取 4 天的行
- python - 在 Django 项目中动态设置“默认”数据库