草庐IT

c++ - 是否可以在 C++0x 中使用 auto 执行以下操作?

EricLippert写了一篇关于Whynovaronfields?的文章在C#中。我很好奇,我们能否在C++0x中做到这一点?例如。structmystruct_t{autoi=0,d=0.0,s=std::string("zero");};抱歉,我无法通过最新草稿得出答案。谢谢, 最佳答案 遗憾的是你不能。该规范在7.1.6.4/3中说明并遵循Otherwise,thetypeofthevariableisdeducedfromitsinitializer.Thenameofthevariablebeingdeclaredsha

通过引用传递的 C++0x 初始化列表

我曾尝试以这种方式使用C++0x初始化列表作为构造函数调用的参数:Foofoo("Foo1",std::vector({"fooA","fooB"}));与构造函数Foo(constchar*name,std::vector&foos)对于这个构造函数,编译器会报错:error:nomatchingfunctionforcalltoFoo::Foo(constchar[5],std::vector>)note:candidatesare:Foo::Foo(constchar*,std::vector>&)[withT=float]但是,当我将构造函数更改为Foo(constchar*n

C++0x:在 std::map 中存储任何类型的 std::function

我试图在映射中存储一组std::function(在GCC4.5下)我想要两种东西:存储参数已经传递的函数;那么你就有调用f()存储不带参数的函数;那么你必须打电话f(...)我想我用类命令和管理器实现了第一个:classCommand{std::functionf_;public:Command(){}Command(std::functionf):f_(f){}voidexecute(){if(f_)f_();}};classCommandManager{typedefmapFMap;public:voidadd(stringname,Command*cmd){fmap1.inse

c++ - C++0x 的库计划?

最近我对VC2010中对lambda的支持感到非常兴奋。我正慢慢开始领会此功能在将C++转变为更好的东西方面的​​全部潜力。但后来我意识到,这种潜力在很大程度上取决于boost和QT等日常库中对lambda的主流支持。有谁知道是否有计划使用C++0x的新功能扩展这些库?lambdas实际上取代了对boost::lambda以及boost中与其交互的所有内容的需求。QT可以在其所有容器中添加对lambda的支持,甚至可能作为定义SLOT的替代方法 最佳答案 Lambda已经非常适合现有的库-函数接受模板参数给定类型的函数对象的任何地方

c++ - C++0x 是否支持 std::wstring 与 UTF-8 字节序列的转换?

我看到C++0x将添加对UTF-8、UTF-16和UTF-32文字的支持。但是三种表示之间的转换呢?我计划在我的代码中到处使用std::wstring。但是在处理文件和网络时,我还需要操作UTF-8编码的数据。C++0x是否也会提供对这些操作的支持? 最佳答案 在C++0x中,char16_t和char32_t将用于存储UTF-16和UTF-32而不是wchar_t.来自n2798草案:22.2.1.4Classtemplatecodecvt2Theclasscodecvtisforusewhenconvertingfromonec

c++ - 如何使用 for-range 循环切片? C++0x

在C++0X中使用基于范围的for循环,我知道我们可以做到:std::vectornumbers=generateNumbers();for(intk:numbers){processNumber(k);}(用lambda写起来可能更简单)但是如果我只想将processNumber(k)应用于数字的一部分,我该怎么办?例如,我应该如何编写这个for循环以将processNumber()应用于数字的一半(头或尾)?是否像在Python或Ruby中那样允许“切片”? 最佳答案 您可以使用“sliced”rangeadaptor来自Boo

C++0x 线程

随着新C++标准(C++0x)的STL中线程功能的出现,将使用POSIX线程甚至Windows线程的现有代码更改为使用STL线程会更好吗? 最佳答案 您总是可以对冲您的赌注...编写您自己的简单线程API,它的功能足以完成您的应用程序需要完成的工作,并更改您的代码以仅针对您的线程API。然后,您可以使用Windows、Posix、STL或其他任何方式实现自定义线程API的内部结构,并在需要时随时更改实现,而不必每次都触及整个代码库。通过这样做,您可以从STL实现开始,然后如果结果是这样,例如Windows使用它有一个难以解决的问题,

c++ - C++0x 的计划发布日期是什么时候?

我们一直在等待它是否会成为一种成熟的语言,但似乎还没有正式定义的发布。只是委员会、讨论和修改。有谁知道C++0x的计划截止日期,或者我们是否必须开始将其称为C++1x? 最佳答案 好吧,委员会目前正忙于下一次修订-每次session都以许多论文作为开场白,这些论文很好地表明了为制定新标准所做的努力:http://www.open-std.org/jtc1/sc22/wg21/有点令人担忧(但令人放心的是,他们不会急于发布标准来安抚公众,但确实感觉到了其中的紧迫性)是Stroustrup刚刚发表了一篇论文,说我们需要采取其次查看概念并

C++0x : overloading on lambda arity

我正在尝试创建一个可以使用带有0、1或2个参数的lambda调用的函数。由于我需要代码在g++4.5和vs2010(不支持可变参数模板或lambda转换为函数指针)上工作,所以我想到的唯一想法是根据元数选择要调用的实现。以下是我对这应该如何看的非工作猜测。有什么方法可以修复我的代码,或者有更好的方法来解决这个问题吗?#include#includeusingnamespacestd;templatestructarity;templatestructarity{staticconstintval=0;};templatestructarity{staticconstintval=1;}

C++0x 线程没有加速

我已经编写了一个程序,用于使用c++0x线程搜索数组中的最大值(用于学习目的)。对于实现,我使用了标准的thread和future类。然而,并行化函数不断显示与非并行化相同或更差的运行时间。代码如下。我尝试将数据存储在一维数组、多维数组中,最后得到了几个数组。然而,没有一个选项给出了好的结果。我尝试从Eclipse和命令行编译并运行我的代码,但仍然没有成功。我也尝试了没有使用数组的类似测试。并行化只给了20%的速度。从我的角度来看,我运行的是非常简单的并行程序,没有锁,几乎没有资源共享(每个线程都在自己的数组上运行)。什么是瓶颈?我的机器配备IntelCorei7处理器2.2GHz和8