草庐IT

0x0000007c

全部标签

c++ - 在 C++0x 中压缩垃圾收集器的实现

我正在C++0x中实现一个压缩垃圾收集器供我个人使用,我有一个问题。显然,收集器的机制取决于移动对象,我一直想知道如何根据指向它的智能指针类型来实现这一点。我一直在考虑指针类型本身中的指针指向指针,或者收集器维护一个指向每个对象的指针列表,以便可以修改它们,从而在访问时不需要双重取消引用指针,但在收集过程中增加了一些额外的开销和额外的内存开销。去这里的最佳方式是什么?编辑:我主要关心的是快速分配和访问。我不关心特别有效的收集或其他维护,因为这并不是GC的真正用途。 最佳答案 将额外的GC移植到C++并没有什么直接的方法,更不用说压缩

c++ - 在 C++0x 中压缩垃圾收集器的实现

我正在C++0x中实现一个压缩垃圾收集器供我个人使用,我有一个问题。显然,收集器的机制取决于移动对象,我一直想知道如何根据指向它的智能指针类型来实现这一点。我一直在考虑指针类型本身中的指针指向指针,或者收集器维护一个指向每个对象的指针列表,以便可以修改它们,从而在访问时不需要双重取消引用指针,但在收集过程中增加了一些额外的开销和额外的内存开销。去这里的最佳方式是什么?编辑:我主要关心的是快速分配和访问。我不关心特别有效的收集或其他维护,因为这并不是GC的真正用途。 最佳答案 将额外的GC移植到C++并没有什么直接的方法,更不用说压缩

C++0x 没有信号量?如何同步线程?

C++0x真的会没有信号量吗?StackOverflow上已经有一些关于信号量使用的问题。我一直使用它们(posix信号量)让一个线程等待另一个线程中的某个事件:voidthread0(...){doSomething0();event1.wait();...}voidthread1(...){doSomething1();event1.post();...}如果我要使用互斥锁:voidthread0(...){doSomething0();event1.lock();event1.unlock();...}voidthread1(...){event1.lock();doSometh

c++ - (x ^ 0x1) != 0 是什么意思?

我遇到了以下代码片段if(0!=(x^0x1))encode(x,m);x^0x1是什么意思?这是一些标准技术吗? 最佳答案 XOR操作(x^0x1)将位0​​取反。所以表达式有效地表示:如果x的位0为0,或x的任何其他位为1,则表达式为真.相反,如果x==1,则表达式为假。所以测试是一样的:if(x!=1)因此(可以说)被不必要地混淆了。 关于c++-(x^0x1)!=0是什么意思?,我们在StackOverflow上找到一个类似的问题: https://s

c++ - ostream showbase 不显示 "0x"为零值

PSPS:(预先编写好的后置脚本)刚刚想到一个更有先见之明的问题将包括以下概念:对于零值整数,这种不显示“0x”(showbase)是一种标准行为,还是只是我的MinGW实现的一个怪癖?这一切都始于一个愉快的星期天早上...我想以十六进制表示形式转储一些句柄,并以一致的格式化方式。我想要一个领先的0x和一个固定宽度,但事实证明,使用预期的流操纵器这是难以捉摸的。我发现这样做的唯一方法是将句柄转换为无符号长整数。这似乎有点不合理,我希望我不是唯一一个想要这个的人..我在标准十六进制操纵器中遗漏了什么?是因为void*(HANDLE)类型只是在ostream的正常十六进制处理之外定义的吗?

c++ - `>>>` 如何在 C++0x 中进行词法分析?

>>>的词法是>>>。但是如果第一个>关闭模板参数列表会发生什么,结果应该等同于>>>还是>>>?在下面的代码中确实很重要:templatestructX{};voidoperator>>(constX&,int){}intmain(){*newX>>1;} 最佳答案 FDIS的文本说Similarly,thefirstnon-nested>>istreatedastwoconsecutivebutdistinct>tokens它不能解除标记和relex。所以这将是一个>>>。请注意,C++实现的输入首先被转换为预处理标记,然后这些

c++ - `>>>` 如何在 C++0x 中进行词法分析?

>>>的词法是>>>。但是如果第一个>关闭模板参数列表会发生什么,结果应该等同于>>>还是>>>?在下面的代码中确实很重要:templatestructX{};voidoperator>>(constX&,int){}intmain(){*newX>>1;} 最佳答案 FDIS的文本说Similarly,thefirstnon-nested>>istreatedastwoconsecutivebutdistinct>tokens它不能解除标记和relex。所以这将是一个>>>。请注意,C++实现的输入首先被转换为预处理标记,然后这些

c++ - 是否可以将 C++0x lambda 转换为 clang block ?

我想知道是否可以将C++0xlambda转换为clangblock。到目前为止,我在上面看到的任何内容都涉及到它们之间的差异之间的讨论。我研究这个的主要原因是为libdispatch制作一个最终包装器,虽然我非常了解dispatch_*_f函数,但任何关于它们使用的信息都有与他们的区block对应物相比,相当缺乏。到目前为止,我已经能够找到有关convertingaC++lambdatoafunctionpointer的信息。,但这更多的是在相反的领域。如果有人知道与此相关的任何事情,并且可以提供链接,或者至少为我指明正确的方向,我将不胜感激。(即使是“目前不可能”的答案也足够了)

c++ - 是否可以将 C++0x lambda 转换为 clang block ?

我想知道是否可以将C++0xlambda转换为clangblock。到目前为止,我在上面看到的任何内容都涉及到它们之间的差异之间的讨论。我研究这个的主要原因是为libdispatch制作一个最终包装器,虽然我非常了解dispatch_*_f函数,但任何关于它们使用的信息都有与他们的区block对应物相比,相当缺乏。到目前为止,我已经能够找到有关convertingaC++lambdatoafunctionpointer的信息。,但这更多的是在相反的领域。如果有人知道与此相关的任何事情,并且可以提供链接,或者至少为我指明正确的方向,我将不胜感激。(即使是“目前不可能”的答案也足够了)

c++ - C++0x 中的新 unicode 字符

我正在构建一个API,它允许我获取各种编码的字符串,包括utf8、utf16、utf32和wchar_t(根据操作系统可能是utf32或utf16)。新的C++标准引入了新的类型char16_t和char32_t没有这种大小的歧义,应该在将来使用,所以我也想支持它们,但问题是,它们会干扰正常的uint16_t吗?,uint32_t,wchar_t类型不允许重载,因为它们可能引用相同的类型?classsome_class{public:voidset(std::string);//utf8stringvoidset(std::wstring);//wcharstringutf16orut