草庐IT

差异性

全部标签

c++ - 性能差异:std::accumulate vs std::inner_product vs Loop

今天,我想分享一些在尝试实现这个简单操作时让我大吃一惊的事情:我发现了执行相同操作的不同方法:通过使用std::inner_product。实现谓词并使用std::accumulate函数。使用C风格的循环。我想通过使用QuickBench并启用所有优化来执行一些基准测试。首先,我比较了两个具有浮点值的C++替代方案。这是通过使用std::accumulate使用的代码:constautopredicate=[](constdoubleprevious,constdoublecurrent){returnprevious+current*current;};constautoresul

c++ - C++ STL 中 max_element 和 minmax_element 的行为差异

在C++max_element中,如果有多个元素是最大值,则返回第一个这样的元素。而minmax_element(C++11及更高版本)返回最后一个最大元素。这种行为的标准是否有原因?来自cplusplus.comIfmorethanoneequivalentelementhasthelargestvalue,theseconditeratorpointstothelastofsuchelements.Thecomparisonsareperformedusingeitheroperator 最佳答案 Boost的库文档包括rati

c++ - OPENCV C 和 C++ API 的不同结果(边界插值差异)

我执行了闭合形态学操作,但使用C和C++API(OpenCV2.4.2)得到了不同的结果输入:使用OpenCV“C”://SetROI//PerformGaussiansmoothing//PerformCannyedgeanalysiscvMorphologyEx(src,dst,temp,Mat(),MORPH_CLOSE,5);结果:http://i47.tinypic.com/33e0yfb.png使用OpencvC++//SetROI//PerformGaussiansmoothing//PerformCannyedgeanalysiscv::morphologyEx(src

java - 如何确认不同的结果是否是由于 float 处理的差异?

我已经将一个相对简单的算法从C++转换为Java,该算法对double类型的数字执行大量计算,但是在两个平台上运行该算法但同一台机器产生的结果略有不同结果。该算法对许多double和整数进行乘法和求和。我在Java算法中将int转换为double;C算法不强制转换。例如,在一次运行中我得到了结果:(Java)64684970(C++)65296408(打印忽略小数位)当然,我的算法可能存在错误,但是在我开始花时间调试之前,是否可以通过C++和Java中不同的浮点处理来解释这种差异?如果是这样,我可以证明这是问题所在吗?更新-类型不同的地方是两个整数之间的乘法,然后将其添加到运行总dou

c++ - reinterpret_cast<char*>(p) 或 static_cast<char*>((void*)p)) 用于字节指针差异,哪个更好?

在提取用于指针运算的原始字节指针时,以下三种类型转换之间有什么区别吗?(假设char为1个字节的平台。)static_cast((void*)ptr))reinterpret_cast(ptr)(更新)或:static_cast(static_cast(ptr))我应该选择哪个?更详细...给定一个类中两个成员对象的指针,我想计算一个到另一个的偏移量,这样我就可以在给定偏移量的情况下重建一个成员的地址和另一个成员的地址。//assumeddatalayout:structC{//...Aa;//...Bb;}我目前使用的代码是这样的:voidapproach1(A*pa,B*pb){/

通过单个函数使用2Pointers的总和和两个数字的差异

主函数应具有函数调用,例如adddiff(&amp;p,&amp;q)...函数定义就像voidadddiff(*a,*b),它应该同时执行加法和减法,它不应返回值,也不应不应在AddDiff方法中使用打印语句。看答案这两个参数均通过引用传递,因此您可以使用它们将结果“返回”到主函数。但是,请记住要在本地保存其价值,然后再覆盖它们!voidadddiff(int*a,int*b){intorig_a=*a;intorig_b=*b;*a=orig_a+orig_b;*b=orig_a-orig_b;}

c++ - FFTW 和 CUFFT 输出之间的差异

在下面发布的字符中,我比较了FFTW和CUFFT中运行IFFT的结果。结果不同的可能原因是什么?舍入误差真的那么多吗?这是相关的代码片段:cufftHandleplan;cufftComplex*d_data;cufftComplex*h_data;cudaMalloc((void**)&d_data,sizeof(cufftComplex)*W);complex*temp=(complex*)fftwf_malloc(sizeof(fftwf_complex)*W);h_data=(cufftComplex*)malloc(sizeof(cufftComplex)*W);memset

c++ - OpenCV 中颜色差异的简单度量?

我有两个cv::Scalar对象,我想计算色差。我想出了这段代码:cv::Scalara(255,128,255);//color1cv::Scalarb(100,100,100);//color2cv::Scalard=b-a;doubledistance=sqrtl(d[0]*d[0]+d[1]*d[1]+d[2]*d[2]);这看起来很笨拙。是否有更简单的方法来表达这个或另一个指标,例如一种表示点积d*d的方式,或者一种直接表示两个cv::Scalar距离的方式,或者cv::Vec4i>,它可以被类型转换成afaik? 最佳答案

深度解析:i++ 与 ++i,探究其性能差异与使用技巧

在编程世界中,经常会遇到对变量进行递增操作,而i++和++i这两个递增操作符就是我们常用的两种方式。这两者看似简单,但却有着微妙的性能区别和使用差异。1.性能差异的探究首先,我们来研究i++和++i在性能上的微妙差异。这对于编写高效的代码至关重要。(1)后缀递增i++i++是后缀递增操作符,它的执行顺序是先使用当前值,再递增。在表达式中,使用的是变量的旧值。inta=5;intb=a++;//b先被赋值为a的旧值(5),然后a再递增为6(2)前缀递增++i相反,++i是前缀递增操作符,它的执行顺序是先递增,再使用递增后的值。inta=5;intb=++a;//a先递增为6,然后b被赋值为a的新

c++ - 差异 : cin. getline() 和 getline(cin, st)

哪个更好,更受欢迎?我真的发现阅读API令人困惑。 最佳答案 成员(member)版读入char*,免费版读入std::string。所以更喜欢免费版!像这样使用它:std::istream&ins=/*...*/;std::stringline;while(std::getline(ins,line)){//processline} 关于c++-差异:cin.getline()和getline(cin,st),我们在StackOverflow上找到一个类似的问题: