草庐IT

0x80080204

全部标签

c++ - 这段代码合法吗? (C++0x 移动语义)

我很好奇这段代码在C++0x中是否合法。具体来说,函数move_it()中声明的对象是否会正确移动到main()中声明的对象?#include#include#includeusingnamespacestd;classx{public:x(){cout 最佳答案 不,它返回对本地对象的引用,就像左值引用一样。只需按值返回它,让x的假定移动构造函数获取右值。按值返回时,返回的对象是右值。如果幸运的话,NRVO优化将启动(就像以前一样)并以任何方式省略复制。 关于c++-这段代码合法吗?(

c++ - 如何在 C++ 字符串中存储 CTRL-A (0x01)?

我想将CTRL-A(0x01)存储在C++字符串中。尝试了以下,但它不起作用。你能告诉我这里缺少什么吗?strings="\u0001";在g++中编译时出现错误:error:\u0001isnotavaliduniversalcharacter 最佳答案 你得到的错误是由于C++03中的2.2/2:Ifthehexadecimalvalueforauniversalcharacternameislessthan0x20orintherange0x7F-0x9F(inclusive),oriftheuniversalcharacte

c++ - 0x7FFF 和 32767 的类型有什么区别?

我想知道值0x7FFF和32767之间的区别是什么。据我所知,它们应该都是整数,唯一的好处是符号方便。它们将占用相同数量的内存,并以相同的方式表示,或者选择将数字写为0x而不是以10为基数还有其他原因吗? 最佳答案 唯一的好处是一些程序员发现在他们的头脑中更容易在16进制和二进制之间进行转换。由于每个以16为基数的数字正好占用4位,因此更容易将位对齐可视化。而且以2为基数写起来相当麻烦。 关于c++-0x7FFF和32767的类型有什么区别?,我们在StackOverflow上找到一个类

C++ 访问冲突写入位置 0x0...设置 int *

我已经查看了这里和其他地方的各种问题,但我仍然无法解释我遇到的访问冲突错误。“访问冲突写入位置0x00000000”对应于NULL指针,对吗?我已经声明了一个int指针,稍后我尝试在该位置设置一个值。我声明指针的时候不应该分配内存空间吗?如果这有点笨拙,请原谅我,但我更像是一个Java/AS3的人。这是我的部分代码...int*input;char*userInput[1];int*output;int_tmain(intargc,_TCHAR*argv[]){while(1){srand(time(0));*input=(int)(rand()%10);它在最后一行中断。

C++0x,带友元运算符的用户定义文字 ""()

将operator""(...)定义为友元函数是否可能和/或有用?classPuzzle{friendPuzzleoperator""_puzzle(constchar*,size_t);...};voidsolve(Puzzle);intmain(){solve("oxo,xox"_puzzle);};我特别考虑“有用”,因为operator""只能在命名空间中定义的规则——尤其是因为标识符以_在全局命名空间中保留。这个friend在这里违反了这个规则吗?所以,这种不完全封装没有任何好处,对吧? 最佳答案 标准在唯一提到对用户定义

C++0x : memory ordering

当前C++0xdraft在第29.3.9节和第29.3.10节第1111-1112页中说明,在以下示例中://Thread1r1=y.load(memory_order_relaxed);x.store(1,memory_order_relaxed);//Thread2r2=x.load(memory_order_relaxed);y.store(1,memory_order_relaxed);结果r1=r2=1是可能的,因为每个线程的操作都放宽了并且指向不相关的地址。现在我的问题是关于以下(类似)示例的可能结果://Thread1r1=y.load(memory_order_acqu

c++ - 具有不合格名称 : C++0x draft n3290 的名称查找

来自ISOC++草案n3290的一点:3.4.0第二点Aname“lookedupinthecontextofanexpression”islookedupasanunqualifiednameinthescopewheretheexpressionisfound.有人可以举例说明这个说法吗? 最佳答案 它表示将在包含表达式的范围内搜索名称。即namespacefoo{structbar{voidfoobar(){do_something();}};}如果您有此代码,名称do_something将在foobar、bar、foo范围内

c++ - 如何在不使用 C++0x 的情况下创建 lambda 函数来匹配 boost::function 参数?

如何使用boost或STL创建lambda函数以匹配中第三段代码中F期望的boost::function参数主?#include#includevoidF(inta,boost::functionf){std::cout我不能使用C++0x并且想避免创建几个单独的函数。如果有帮助,我可以使用boost::function以外的东西,我的首要任务是简洁地创建lambda。 最佳答案 #include//STL#include//Boost.Lambda#include//Boost.Pheonix#include//Boost.Phe

c++ - C++0x 中 std::make_tuple 的问题

使用VisualStudio10编译以下程序时,出现了很多编译错误:#include"stdafx.h"#include#include#include#includeint_tmain(intargc,_TCHAR*argv[]){typedefstd::tuplekey_t;typedefstd::mapmap_t;map_tthe_map;autok=std::make_tuple("one","two");the_map[k]="thevalue";autoq=std::make_tuple("one","two");autoi=the_map.find(q);std::cou

c++ - 直接从 C++0x lambda 调用方返回

我刚刚重写了以下从当前函数返回的C89代码://makesuretheinodeisn'topen{size_ti;for(i=0;ihtab);++i){structHandleconst*consthandle=&g_cpfs->htab[i];if(handle_valid(handle)){if(handle->ino==(*inode)->ino){log_info("Inode"INO_FMT"isstillopen,delayingremoval.",(*inode)->ino);returntrue;}}}}使用这个C++0xSTL/lambda混合体:std::for