草庐IT

summarise_each

全部标签

c++ - 在 CUDA/Thrust 中,如何在 for-each 操作期间访问 vector 元素的邻居?

我正在尝试使用CUDA中的Thrust库进行一些科学模拟,但我陷入了以下操作,这基本上是一个for-each循环:device_vectorIn(N);for-eachIn(x)inInOut(x)=some_calculation(In(x-1),In(x),In(x+1));end我已经查阅了stackoverflow.com并找到了一些类似的问题:Similarquestions1但似乎只有当some_calculation函数在2个参数之间完成时才可能使用变换迭代器,因为变换迭代器最多传递两个参数。那么,对于问题2:Similarquestions2讨论就这么结束了,还没有得出

c++ - 通过 std::tuple<...> 实现 map() 和 each() - 将索引作为模板参数传递给仿函数

经过几年的Web开发,我再次使用C++(14)工作,并决定通过模板元编程获得一些“动态类型函数的乐趣”。我已经实现了map和each在元组上:templatevoidtuple_each_internal(Tupleconst&tuple,Funcfunc,index_sequence){autores={(func(get(tuple)),nullptr)...};}template::value>>voidtuple_each(Tupleconst&tuple,Funcfunc){tuple_each_internal(tuple,func,Indices());}structde

c++ - 有没有办法让 for_each 引用?

This引用for_each如下:templateFunctionfor_each(InputIteratorfirst,InputIteratorlast,Functionf);我有一个收藏std::list,和一个函数voidDo(std::string)给for_each时工作正常与迭代器一起。但是如果我提供像voidDo(std::string&)这样的函数,它不编译。有办法解决吗?还是我应该忘记它,因为一些像魔术一样的RVO正在发生?:D编辑:boolPluginLoader::LoadSharedObjects(){for_each(l_FileNames.begin(),

c++ - 使用 for_each 与 range-for 有什么好处?

从历史上看,我知道最好使用标准算法(例如for_each)而不是for循环,因为它们更具可读性。但我只是觉得在c++11中,常规的for循环比具有相应回调仿函数的众多标准算法要简洁得多。我这样想有错吗?许多标准算法是否已过时?这些方法有哪些不同的好处? 最佳答案 根据您的判断。由于lambda和更好的绑定(bind)表达式,许多算法在C++11中变得更容易使用,它们允许您以相对简洁的方式指定仿函数。然而,基于范围的for循环也是一个完全合法的选择。如果您只需要循环体中的一两个语句,那么一定要使用基于范围的循环。如果您需要在对象集合上

for_each 中的 C++ 仿函数意外行为

考虑以下示例:#include#include#includeusingnamespacestd;classaccum{public:intsum;accum(){sum=0;}voidoperator()(inta){sum+=a;printf("sum=%d\n",sum);}};intmain(){intari[]={2,8,5,9,1};vectorvi(&ari[0],&ari[5]);accumf;for_each(vi.begin(),vi.end(),f);printf("finalsum:%d\n",f.sum);}我预计总和为25,但它打印出0。为什么f保持不变?有

c++ - for each 和 for_each 有什么区别?

我接手了一段旧代码,需要使用JNI调用。在代码中看到了foreach(in)的用法,但是这段代码无法在linux下编译。我很想知道foreach是怎么生成的,可以在哪些平台上使用,linux下编译的时候有没有?我试图理解foreach的语法,但是这些信息几乎不可能找到,但是有很多for_each的用法。在Windows平台上,我只使用VisualStudio2013(v120)编译成功,v14之后的版本出现异常。在linux平台下,我用下面的命令编译,报了很多错误。结果如下:g++-I/usr/java/jdk1.8.0_191/include/-I/usr/java/jdk1.8.0

java - 什么是 Java 等同于 C++ 的 for_each 模板?

在以下代码中,您可以应用任何函数f(例如,加、减等)。我如何通过Java做到这一点?templateFunctionfor_each(InputIteratorfirst,InputIteratorlast,Functionf){for(;first!=last;++first)f(*first);returnf;} 最佳答案 要使此代码在Java中运行,您需要对其进行两项主要更改。首先,您需要将STL样式的迭代器替换为Java样式的迭代器,幸运的是这并不难。其次,您必须更改对不同类型对象的函数指针或仿函数参数的使用,因为Java不

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