For-loop或std::any_of,我应该使用哪一个?
For-loop or std::any_of, which one should I use?
我无法在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
而不是循环。
相关文章:
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,使用CRC生成器进行编码
- 为了准确地进行基准测试,我应该制作一个大函数原子吗
- 我应该移动一个不再使用的值吗?
- 我应该返回一个右值引用(通过 std::move'ing)吗?
- 我应该传递一个 std::vector 还是固定数量的参数
- 当底层OpenGL状态被修改时,我应该声明一个方法常量吗
- 我应该创建一个临时对象来实例化C++中的成员变量吗
- 我应该声明一个方法 no除非它在正确使用时永远不会抛出
- 我应该删除一个取消引用的指针数组吗?
- 我应该将一个临时变量移到一个变量中吗
- 我应该包装一个完全包含在node.js函数中的C++对象吗
- 我应该做一个类,而不是重复的get/set语句
- 我应该在内存或数据库中存储列表,我应该建立一个类来连接到DB
- 我应该返回一个值还是抛出一个异常…
- 什么时候我应该提供一个移动感知过载
- 如果我只需要变量在其他线程中的值,我应该在一个线程中锁定变量吗?如果我不需要它为什么它有效?
- 我应该创建一个线程,如果我想使分布式互斥库
- Qt:我应该在一个线程上运行QFileWatcher
- 我应该在一个读写或多个块通过套接字发送文件