jjzjj

c++ - C++ 性能技术报告 TR 18015 中使用了哪些实现?

在TechnicalReportonC++Performance有很多表格比较了C++的不同实现。不幸的是,没有提到所使用的操作系统和编译器。我想知道这些信息是否可以通过非官方方式获得,或者至少可以从技术报告本身中推断出来。 最佳答案 从报告的第23页开始:“大多数关于运行时成本的评论都是基于一组简单的测量,这些测量是在三种不同的机器架构上使用六种不同的编译器执行的,这些编译器使用各种优化选项运行.每个测试都运行多次以确保结果是可重复的.代码在附录D中给出:.这些测量的目的既不是为了获得C++在给定机器上的最佳性能的精确陈述,也不是

c++ - std::tr1::function::target<TFuncPtr> 和协变/逆变

因为我喜欢用C#和C++编程,所以我打算实现一个类似C#的事件系统,作为我计划的C++SFML-GUI的坚实基础。这只是我的代码的摘录,我希望这能澄清我的概念://Event.h//STLheaders:#include#include#include//boostheaders:#include#includenamespaceUtils{namespaceGui{#defineIMPLEMENTS_EVENT(EVENTNAME,EVENTARGS)public:\Utils::Gui::IEvent&EVENTNAME(){returnm_on##EVENTNAME;}\prot

c++ - C++ TR2 文件系统库的状态如何?

截至上次布里斯托尔session,C++TR2文件系统库的状态如何?它会成为C++1Y(C++14?)的一部分吗?它会被暂停吗?或者最近三次session有任何已知的评论吗? 最佳答案 它有recentlybeenunanimouslyapprovedbytheISOcommittee但没有及时catchC++14。尽管所有TS(文件系统、库基础、网络等)都有望在C++17之前独立可用,但我相信其意图是如果它们及时准备好,它们将被纳入C++17,正如TR1和C++11所发生的那样。 关于

c++ - tr1::mem_fn 和 tr1::bind:常量正确性和重载

以下代码片段有什么问题?#include#include#includeusingnamespacestd::tr1::placeholders;structabc{typedefvoidresult_type;voidhello(int){std::cout尝试用g++-4.3编译它,似乎cv-qualifier重载函数混淆了tr1::mem_fn和tr1::bind并出现以下错误:nomatchingfunctionforcallto‘bind(,...下面的代码片段编译但似乎破坏了const-correctness:structabc{typedefvoidresult_type

c++ - 为什么 std::tr1::shared_ptr<>.reset() 如此昂贵?

分析一些大量使用shared_ptrs的代码,我发现reset()的开销出奇地大。例如:structTest{inti;Test(){this->i=0;}Test(inti){this->i=i;}};...autot=make_shared(1);...t.reset(somePointerToATestObject);跟踪最后一行中的reset()(在VC++2010下),我发现它创建了一个新的引用计数对象。有没有更便宜的方法,重用现有的引用计数并且不打扰堆? 最佳答案 在一般情况下,您不能重用现有的引用计数,因为可能有其他s

c++ - 将 lambda 转换为 std::tr1::function

使用带有tr1服务包和IntelC++编译器11.1.071[IA-32]的visualstudio2008,这与我的其他相关question我正在尝试为c++编写一个功能映射,它的工作方式有点像ruby​​版本strings=[2,4].map{|e|e.to_s}所以我在VlcFunctional命名空间中定义了以下函数templatevectormap(constContainer&container,std::tr1::functionf){vectortransformedValues(container.size());intindex=-1;BOOST_FOREACH(c

c++ - std::tr1::function 是否有合理的默认值?

我花了一些时间在谷歌上搜索,但没有真正找到任何东西。我希望能够做到这一点:std::tr1::functionfoo(SOME_DEFAULT_FUNCTION_THAT_DOES_NOTHING);////Somecodethatcouldpossiblyassignfoo//foo();否则我必须这样做:std::tr1::functionfoo;////Somecodethatcouldpossiblyassignfoo//if(foo){foo();}我意识到我可以创建一个什么都不做的函数,但我正在寻找一些标准的方法来不必处理检查函数是否被赋予空对象模式的值。

c++ - 无法分配 tr1::shared_ptr

我有一个以tr1::shared_ptr作为成员的类,如下所示:classFoo{std::tr1::shared_ptrbsp;voidBar();}在成员函数Bar中,我尝试这样赋值:bsp=newTCODBsp(x,y,w,h);g++然后给我这个错误nomatchfor‘operator=’in‘((yarl::mapGen::MapGenerator*)this)->yarl::mapGen::MapGenerator::bsp=(operatornew(40u),(,((TCODBsp*))))’/usr/include/c++/4.4/tr1/shared_ptr.h:8

c++ - 如何让 tr1::array 分配对齐内存?

您可以分配一个std::vector,它通过定义您自己的分配器来分配对齐的堆内存。您可以使用declspecalign在堆栈上分配一个c风格的数组。但是你能声明一个tr1::array来保证索引为零的元素对齐吗? 最佳答案 tr1::array(以及std::array和boost::array)都是POD,所以内容占用的内存与数组的内存重合。因此,根据需要分配array,并使用new位置构造它。typedefstd::tr1::arrayAryT;void*array_storage=aligned_allocation(size

c++ - 我如何为 tr1::unordered_map 定义一个不绑定(bind)模板参数的宏/typedef/etc?

这可能是个有点傻的问题,但我不得不问。我正在尝试在C++中使用unordered_map类,但不是每次都将其作为tr1::unordered_map引用,我只想使用关键字hashMap。我知道typedeftr1::unordered_maphashMap有效,但这种修复了键的数据类型和对应于hashMap的值,而我希望有更多类似以下内容:#definehashMaptr1::unordered_map我可以根据需要定义键和值的数据类型,但这不起作用。以前有人遇到过这个问题吗?谢谢 最佳答案 这是C++11之前的C++所缺少的东西。