草庐IT

each_cons

全部标签

C++11 for_each 和 lambdas 优化

我正在测试以下代码:#include#include#include#includeintmain(intargc,char*argv[]){std::vectorv(10000000);clock_tthen=clock();if(argc我正在使用g++4.6编译它,没有任何优化标志,这是我得到的:[javadyan@myhostexperiments]$./a.out260000[javadyan@myhostexperiments]$./a.outaaa330000[javadyan@myhostexperiments]$使用-O1优化会产生以下(意料之中的)结果:[javad

c++ - MSVC 并发运行时中的 parallel_for_each 和 parallel_for 有什么区别?

parallel_for_each的形式是:Concurrency::parallel_for_each(start_iterator,end_iterator,function_object);但是parallel_for也是类似的形式:Concurrency::parallel_for(start_value,end_value,function_object);那么在多核编程中使用的Concurrency::parallel_for和Concurrency::parallel_for_each算法有什么区别? 最佳答案 我不知

c++ - 使用 std::for_each 遍历树

我对使用algorithm还很陌生和functional在C++中。我需要进行树遍历并为每个元素执行一个函数。请参阅下面的代码。这行得通,但我有一些我不喜欢的东西,也许可以做得更好。请注意,我仅限于相当旧的g++(4.4.7)版本,无法使用lambda函数。我使用包装函数do_walk和std::bind调用成员函数walk在每个元素上。有没有办法避开包装函数,直接调用成员函数?我为回调函数使用了typedefUnaryFunction.我更愿意使用walk的模板化版本.但是,当我更改代码以使用模板时,出现以下编译错误:error:nomatchingfunctionforcallto

c++ - std::for_each 中的多态仿函数

我正在尝试使用STL算法for_each而不会在我的代码中激增模板。std::for_each想要按值实例化MyFunctor类,但它不能因为它是抽象的。我创建了一个仿函数适配器类,它传递一个指针,然后在适当的时候取消引用它。我的问题:STL或Boost是否已有这样的适配器类?我不想重新发明轮子!structMyFunctor{virtual~MyFunctor(){}virtualvoidoperator()(inta)=0;}namespace{templatestructFunctorAdapter{FunctorAdapter(FunctorType*functor):mFun

c++ - 使用 std::for_each lambda 函数时出错

我有一个小问题,我不明白为什么这段代码不起作用:std::for_each(users.begin(),users.end(),[](Wt::WStringu){std::coutaddItem(u);});编译时遇到的错误:GameWidget.cpp:Inlambdafunction:GameWidget.cpp:352:30:error:'users'isnotcapturedGameWidget.cpp:353:4:error:'this'wasnotcapturedforthislambdafunctionGameWidget.cpp:Inmemberfunction'vir

c++ - 从 lambda 访问 for_each 迭代器

是否可以访问std::for_each迭代器,这样我就可以使用lambda从std::list中删除当前元素(如下所示)typedefstd::shared_ptrEventPtr;std::listEventQueue;EventTypeevt;...std::for_each(EventQueue.begin(),EventQueue.end(),[&](EventPtrpEvent){if(pEvent->EventType()==evt.EventType())EventQueue.erase(???Iterator???);});我读过关于使用[](typenameT::va

c++ - 自定义双向迭代器的 reverse_iterator 上的 for_each 需要 OutputIterator

我创建了一个简单的不可变双向迭代器:#include#include#include#include#includeclassmy_iterator:publicstd::iterator{intd_val;public:my_iterator():d_val(0){}my_iterator(intval):d_val(val){}my_iteratoroperator--(int){d_val--;returnmy_iterator(d_val+1);}my_iterator&operator--(){d_val--;return*this;}my_iteratoroperator+

c++ - 为什么 for_each 不能在这里选择正确的打印

我编写了一个打印模板函数,它为bool类型值打印"True"或"False"。我试图将它应用于for_each算法,但它不起作用。输出仍然是0或1。似乎模板特化在for_each中不起作用。怎么会这样?如何使代码按预期工作?#include#include#include#include#includeusingnamespacestd;templatevoid_print(constT&i){coutvoid_print(constbool&i){if(i==0)coutvoidoperator()(constT&val)const{_print(val);};};intmain()

c++ - C++ 中的 for_each()

我在两台不同的机器上编译了我的代码,我认为它们具有相同的设置。然而,一个编译没有问题,另一个给出了以下错误。LogEventReader.cpp(320):errorC3861:'for_each':identifiernotfound,evenwithargument-dependentlookup相关代码:#include...for_each(messages.begin(),messages.end(),processXMLMessage);有什么想法可能是什么问题吗?TIA。 最佳答案 改为尝试std::for_each(

c++ - 为什么 for_each + lambda 会触发 -Waggregate-return 警告?

当尝试使用gcc和-Waggregate-return标记警告的以下示例时:functioncallhasaggregatevaluetriggers:structElement{//...stuff...}Containerelements(10);for_each(begin(elements),end(elements),[](Element&e){//...modifyelements...});据我所知,-Waggregate-return标记“如果定义或调用任何返回结构或union的函数时发出警告”,因为如果我理解正确的话,您可能通过返回足够大的对象来溢出堆栈。但是,for