哪个c ++实现更可取,基于范围的循环或count_if

时间:2017-09-15 09:09:41

标签: c++ algorithm performance

我读了一个问题,哪个实现更适合执行一些矢量项的计数。

这比

更好吗?
projects

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

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

1 个答案:

答案 0 :(得分:1)

你应该几乎总是使用像std::count_if这样的算法(如果有的话)。

原因是编译器供应商可以将优化放在不可移植的情况下,如果您要在自己的循环中手动将它们放入。例如,内部函数可以是setInterval(function(){ this.dbProcess.dataProcess('','getServerUpdate.php').subscribe( data => { //console.log("getRequests", data); this.response = data; this.response = this.response._body; this.response = JSON.parse(this.response); console.log(this.response.REQUEST) console.log("Timer Running : " + localStorage.getItem('timer')) if(this.response.RESPONSE == "success"){ console.log("success"); this.timer = localStorage.getItem('timer'); clearInterval(this.timer); localStorage.setItem('timer', "end"); console.log("Timer Ended" + this.timer); this.vibration.vibrate(1000); this.localNotifications.schedule( { id: this.response.REQUEST.RequestId, title: 'New Ride Request (' + this.response.REQUEST.firstname + ' ' +this.response.REQUEST.lastname + ')' , text: this.response.REQUEST.FromLocation + ' ' +this.response.REQUEST.ToLocation + ' ' + this.response.REQUEST.EstimatedCost, } ); this.modal = this.modalCtrl.create(JobRequestPage); this.modal.present(); } else{ console.log("Failure"); } }, err => { //on error this will execute console.log("server error"); //this.showError(err); }, () =>{ // on complete this will execute console.log("completed"); } ); }, 5000); 特定的,甚至可以加速基本任务,例如计算数组中的值。

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