Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪个c++;最好采用基于范围的循环或计数,如果_C++_Algorithm_Performance - Fatal编程技术网

C++ 哪个c++;最好采用基于范围的循环或计数,如果

C++ 哪个c++;最好采用基于范围的循环或计数,如果,c++,algorithm,performance,C++,Algorithm,Performance,我阅读了以下问题:哪个实现更适合执行一些向量项的计数 这比你想象的好吗 auto countif = [] (T t) { return t.countable(); }; const int count = std::count_if(v.begin(), v.end(), countif); return count ; 这个 该问题已被否决,因此被删除 您几乎应该始终使用一种算法,如可用的算法 原因是,如果您将优化手动放入自己的循环中,编译器供应商可以将不可移植的优化放入其中。例如,一些

我阅读了以下问题:哪个实现更适合执行一些向量项的计数

这比你想象的好吗

auto countif = [] (T t) { return t.countable(); };
const int count = std::count_if(v.begin(), v.end(), countif);
return count ;
这个

该问题已被否决,因此被删除

您几乎应该始终使用一种算法,如可用的算法

原因是,如果您将优化手动放入自己的循环中,编译器供应商可以将不可移植的优化放入其中。例如,一些特定于CPU的内在函数甚至可以加速基本任务,如数组中的数值计算


除非您特别需要使用非可移植优化,否则标准库中编译器提供的算法在可移植方面可能比您可能编写的更快。

如果您只使用好的名称。你为什么给lambda countif起名?它是可数的,是可数的,或是可数的,或是不可数的,或是诸如此类的。名字来自OP,而不是我。我留着它们是为了让他能认出他的问题。这不是使用恶名的正当理由。你是这里的OP。为什么要删除你的答案?也许它并不完美,但真实的测量结果总是有趣的。顺便说一句,由于基于观点,你有3张接近票数。你可以重新表述这个问题,专门询问速度性能,这根本不是基于观点(但“什么更好?”肯定是)。你仍然会得到评论,这是你可以很容易地衡量自己的东西,然而,我不会太在意反对票,只是取消删除你的答案
int count = 0;
for (  auto& t : v ) 
    if (t.countable()) count++;