草庐IT

替代者

全部标签

c++ - 函数指针 : is the simple canonical use bad from a performance point of view? 如果是的话,c++11-ish 的替代方案是什么?

我在我的c++代码中经常使用函数指针,总是以符合这个简单规范示例的方式使用(例如,函数具有相同的I/O,但所需的操作只是在运行时已知):#includeusingnamespacestd;intadd(intfirst,intsecond){returnfirst+second;}intsubtract(intfirst,intsecond){returnfirst-second;}intoperation(intfirst,intsecond,int(*functocall)(int,int)){return(*functocall)(first,second);}intmain()

c++ - GetShortPathName 函数有哪些替代方法?

我正在寻找一个函数,它可以为给定的“长”路径返回“短”(8.3表示法)路径。然而,GetShortPathName函数(看起来非常适合)对我不起作用,因为它要求具有给定长路径的文件已经存在。对于给定的长路径,我还有哪些其他选项可以计算8.3路径? 最佳答案 如果文件不存在,则它没有8.3名称。8.3名称是在创建文件时创建的。如果需要,您当然可以在目录本身上使用GetShortPathName获取其所在目录的8.3路径名。不管怎样,现在是2010年了。任何东西都使用8.3名称真的很倒退。

c++ - c++11 中的 typeid(T).name() 替代方案?

在c++11中是否有一种标准的方法来使用一些模板黑魔法或动态地使用一些标准库函数来获取类的名称? 最佳答案 不,但你可以做一个:templatestructmeta{staticconststd::string&get_name(){returnT::class_name;}};然后将静态成员class_name添加到类中:classMyClass{public:staticconststd::stringclass_name("MyClass");};或专门化元:templatestructmeta{staticconststd:

c++ - 尽管违反了一个定义规则,但是编译器/链接器如何选择替代的内联构造函数?

关于Whatdetermineswhichclassdefinitionisincludedforidentically-namedclassesintwosourcefiles?,其中有意,明显地违反了OneDefinitionRule,我仍然感到困惑,即使编译器/链接器可以选择一个定义而不是另一个定义也是如此。(基于答案/评论的附录:我正在寻找一个示例,说明给定的代码故意违反标准,因此该代码导致未定义的行为,因此编译器/链接器如何产生以下所示的结果。)代码示例是://file1.cpp:#include#include"file2.h"structA{A():a(1){}inta;

c++ - 已定义参数的 GLEW 的 OpenGL 替代品或其解决方案

所以我发布了aquestionsimilartothisinstackoverflow但解决方案似乎可以通过更简单的解决方案来解决。基本上,我使用GLEW加载我的OpenGL头文件等,没有任何麻烦,但由于我使用VIM和Clang_Complete来完成参数,我坚持只完成名称而没有实际显示的参数。因为显然这些函数被定义为#defineFOOsomefunction未定义为#defineFOO(arg1,arg2,arg3)somefunction(arg1,arg2,arg3)我的解决方案是在我的~/.vimrc文件中添加一个选项,并且必须完全删除GLEW并将其替换为#defineGL_

c++ - MS strncpy_s 的替代品

strncpy_s或_itoa_s等Microsoft安全增强功能有哪些替代方案?虽然在MS环境中开发,但目标是编写可以轻松移植到其他平台的代码。 最佳答案 如果你真的想用C编程:使用普通的旧标准strncpy。如果您使用C++编程:使用普通的旧标准字符串类std::string。(提示:您可能想要后者。C字符串只是等待发生的错误,即使您使用“安全”*_s函数也是如此。C++添加字符串类是有原因的) 关于c++-MSstrncpy_s的替代品,我们在StackOverflow上找到一个类

c++ - 为什么标准 R 中值函数比简单的 C++ 替代函数慢得多?

我在C++中实现了以下中位数,并通过Rcpp在R中使用它://[[Rcpp::export]]doublemedian2(std::vectorx){doublemedian;size_tsize=x.size();sort(x.begin(),x.end());if(size%2==0){median=(x[size/2-1]+x[size/2])/2.0;}else{median=x[size/2];}returnmedian;}如果我随后将性能与标准内置R中值函数进行比较,我将通过microbenchmark获得以下结果>x=rnorm(100)>microbenchmark(m

c++ - std::vector 的替代方案,因为重新分配会使指向元素的指针无效

这可能是一个新问题(我是),但我已经尽可能多地搜索以找到以下问题的解决方案我有以下场景(当然是经过大量提炼的):classContainer{std::vectorobj;};classPointers{std::vectorobj_ptr;};我有一个例程,将Object类型的元素推回Container中的vectorobj,然后将指向同一元素的指针推回obj_ptr。总体思路是obj_ptr[i]==&obj[i]贯穿程序的整个生命周期。我遇到的问题是,每当obj的容量需要增加时,所有指针都会失效,从而使obj_ptr完全无用。我已经尝试过使用最大预期大小(大约10^7)的obj.

c++ - 将另一个函数作为参数的 C 函数的替代语法

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我最近了解到这是合法的C:#includeintfoo(intbar(int)){returnbar(42);}intbar(intx){returnx*42;}intmain(){printf("Baz=%d\n",foo(bar));return0;}在没有警告的情况下编译并按预期运行(即使作为C程序而不是C++编译和工作也很好)rep~/Documents$g++-Walltest.

c++ - 替代 PImpl Idiom - 优势与劣势?

传统的PImplIdiom是这样的:#includestructBlah{//publicinterfacedeclarationsprivate:structImpl;std::unique_ptrimpl;};//insourceimplementationfile:structBlah::Impl{//privatedata};//publicinterfacedefinitions然而,forfun,Itried改为使用具有私有(private)继承的组合:[测试.h]#include#includetemplatestructPImplMagic{PImplMagic(){s