有哪些垃圾收集器可用于C++;? 列出了几个C++ GC。 不过,我不使用任何,RAII也是我的朋友。 < P>垃圾机对C来说非常好,但是在C++下使用很棘手。请查看上的“C++接口”部分

我个人听说的唯一一个是我确信其他的存在,但我没有处理它们(或寻找它们)。该库包含一些共享的东西,基本上充当引用计数垃圾收集器。如果你接受C++设计的原理,那将自动满足你对“垃圾收集器”的需求。 < P>列出了几个C++ GC。 不过,我不使用任何,RAII也是我的朋友。 < P>垃圾机对C来说非常好,但是在C++下使用很棘手。请查看上的“C++接口”部分 我的意见是,如果您需要垃圾收集,请选择内置垃圾收集功能的语言 < > C++的最佳通用解决方案是共享指针(例如从Boost)处理循环依赖关系。

C++ 是这样的吗;afx“U味精”;VS/MFC仍然使用装饰器?

我正在做一个MFC程序,它早在VC6时代就开始了。当时有一个类向导,它使用注释中的一堆装饰器和标记来解析类文件 例如,它将在其维护的消息处理程序前面插入afx_msg。它将用/{AFX_MSG_MAP(TheApp)和/}}AFX_MSG_MAP注释标记一个代码块,以帮助它找到它想要处理的消息映射的部分 好了,这已经不需要了。除此之外,类向导还有很多缺点,我们不得不对这些托管块进行大量手动编辑,而且我们从来没有经常使用它 是否还有其他原因继续使用afx_msg及其同类产品 AFAIK,afx_味

C++ 递归函数上的OpenMP并行化

我正在尝试使用并行化来提高绘制具有有序对象的三维场景的刷新率。场景绘制算法首先递归地遍历对象树,并由此构建绘制场景所需的基本数据的有序数组。然后它多次遍历该数组以绘制对象/覆盖,等等。因为我读到的OpenGL不是线程安全的API,我假设数组遍历/绘制代码必须在主线程上完成,但我认为我可能能够并行化填充数组的递归函数。关键在于数组必须按照对象在场景中出现的顺序填充,因此所有将给定对象与数组索引关联的功能都必须按照正确的顺序完成,但是一旦分配了数组索引,我就可以填充该数组元素的数据(这不一定是一个简

C++ QuantLib启动器指南

关于quantlib()有好的入门文档吗?这些例子没有很好的文档记录,帮助也没有提供那么多的见解。当然有 数百个单元测试 十几个或更多的例子 超过1000页的Doxygen生成的文档 Luigi(首席开发商)起草的几份 所有这些都很复杂,因为主题很复杂。不免费午餐定理似乎也适用于代码;-) 感谢您添加quantlib标签。我们这里应该还有一些问题 Quantlib的创建者在网络上非常活跃,因此如果你在那里问一个具体的问题,他们很可能会回答。你可以访问。我发布了两个依赖于QL的示例代码

C++ 转到无法执行的代码行

我一直被教导在编程中几乎从不使用goto语句。然而,我们需要这样做,作为我最近的编程项目的一部分。我有一个带有各种goto语句的if/else语句,goto语句无法执行。我不知道为什么。任何帮助都将不胜感激 int myInt = XXXXXXX; if((myInt>>22) & 7 == X) goto a; else if((myInt>>22) & 7 == Y) g

C++ C+中的外部函数+;

在cpp文件中对函数进行外部化时,编译器是否会对这些函数进行不同的处理 extern void foo(char * dataPtr); void foo(char *); extern void foo(char * ); 我想知道,因为我已经看到了所有这些代码,而不知道区别是什么。 ExtXN/COD>是C++函数的默认链接。这三个声明之间没有区别。没有。它们都是相同的函数。只有一个函数,即具有此签名: void foo(char *); 有没有关键字extern,其他两个的存

C++ 内存泄漏问题

我有一个简单的程序,它创建一个线程,并等待线程结束,然后程序也结束。当我用C(gcc)编译器编译这个程序,并用valgrind检查它时,没有问题,但当我用C++(g++)编译器编译它,并用valgrind检查它时,它表明我的程序有内存泄漏。有什么问题吗 这是我的节目 #include <pthread.h> #include <errno.h> #include <stdlib.h> #include <stdio.h> #include <

C++ 如何判断用户是否试图关闭C+中的窗口+;?

当用户单击窗口上的关闭按钮时,我需要中断一个while循环,但我不知道要检查什么。我正在使用allegro运行GUI。如果使用allegro 4:() Allegro 5更像是: al_register_event_source(queue, al_get_display_event_source(display)); // in your event loop: if (event.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { } 有关所有详细信息,请参阅

C++ 重新初始化timeval结构

如何从time.h重新初始化timeval结构 我知道我可以将结构的两个成员都重置为零,但我是否忽略了其他方法?您可以使用memset,然后您还可以将任何特定于平台的成员重置为零。如果您正在寻找一个单行程序,我想您也可以使用memset来完成这项工作: struct timeval myTime; /* snip ... myTime is now initialized to something */ memset(&myTime, 0, sizeof(timeval)); //

C++ 获取c常量的值

我有一个.h文件,其中数百个常量被定义为宏: #define C_CONST_NAME Value 我需要的是一个可以动态获取其中一个常量值的函数 所需的函数标题: int getConstValue(char * constName); 这在语言中可能吗 ----编辑 谢谢你的帮助,这很快:) 正如我所想,没有奇迹般的解决办法来满足我的需求 事实上,我使用的头文件是由“SCADE:”生成的 我从@Chris那里得到的一个解决方案是使用一些python来生成完成这项工作的c代码 现在我需要做

C++ 如何将信号名称(字符串)转换为信号代码?

我正在编写一个程序,从命令行将信号的名称(例如SIGSTOP、SIGKILL等)读取为字符串,并调用kill()系统调用来发送信号。我想知道是否有一种将字符串转换为信号代码的简单方法(在signal.h中) 目前,我正在编写自己的地图,如下所示: signal_map["SIGSTOP"] = SIGSTOP; signal_map["SIGKILL"] = SIGKILL; .... 但是为所有的信号写这篇文章是很乏味的。所以,我在寻找一种更优雅的方式,如果它存在的话。不确定这是否就是你想要

C++ C++;指向临时变量的引用?

以下是我的理解: 执行这一行时,临时变量将被销毁并 指未定义的变量。在这个过程中,没有 调用复制构造函数 那么,为什么我们仍然可以发布以下声明并获得结果呢 af refers to a temporary variable ClassB(1) and after the const此处可延长正在创建的临时对象(即ClassB(1))的使用寿命。它的作用域持续到af超出作用域 const ClassB &af = ClassB(1); 这是因为,af只不过是通过将1传递给其构造函数而构

Can a C++;用户定义的文本运算符是否传递过空指针? 是否可以通过C++用户定义的文字运算符传递空指针?< /P>

这确实发生在实验版本的g++(gcc版本4.7.0 20111114(实验)[主干版本181364](Debian 20111114-1)),但我不确定这是一个bug(90%确定)还是一些奇怪的预期行为 示例程序: #include <iostream> #include <stdexcept> #include <string> std::string operator "" _example (const char * text) { using s

C++ 让VS10调试器跳转某些库时出现问题?

我在使用boost系列化库时遇到调试器错误。为了解决这些问题,我试图让VisualStudio10跳过对boost库的调试,在阅读了som之后,我发现了如何实现这一点,但解决方案不知何故不起作用。这是一张regedit的图片 据我所知,这是一种方法,但在VS10中调试时,它仍然会在boost文件上给我错误。有人能看出我做错了什么吗 编辑 发现解决方案有问题,是在regedit的32位部分,而不是我的系统所在的64位部分。然而,改变这一点并没有解决问题。这是一张新照片 这里有一篇相关的帖子,可以

C++ 调用recv系统调用时为什么调用sigprocmask?

我有一些代码定期调用recv()(带有MSG\u DONTWAIT标志)。我很好奇,因为在vtune中评测代码时,我看到一个与recv()相关联的sigprocmask()调用,执行该调用占用了总时间的很大一部分。我很好奇为什么recv()正在调用sigprocmask()可能是为了让recv知道是否生成了相关的信号,否则,如果所述信号被阻止,就看不到这些信号。EAGAIN/EWOOLDLOCK在脑海中是errno的值,有时使用可能被阻塞的信号生成。您看过吗?在linux下使用TCP套接字时,如

转化积累 有人写了一个C++的STL兼容的算法,它结合了 STD::变换< /C>和 STD::累积< /代码>,成为支持一元、二元甚至可能(n元!)变量的单遍算法,比如“代码> STD::TrimFrimeAtgult”我想要这个,因为我发现这个模式在线性代数中高度可重用,例如在(l1-)范数计算中。l1范数计算元素绝对值之和。

Uhm。。。我敢打赌,您可以通过将转换嵌入到二进制谓词中,转换元素并在转换后累积来实现这一点 struct times2accumulator { int operator()( int oldvalue, int newvalue ) const { return oldvalue + 2*newvalue; } }; int r = std::accumulate( v.begin(), v.end(), 2, times2accumulator() ); 该函子相

C++ 为什么第二个变量作为引用和常量传递

为什么不将first作为引用和常量传递 template <typename Iterator> int distance(Iterator first, const Iterator & last) { int count; for ( ; first != last; first++) count++; return count; } 模板 int距离(迭代器优先、常量迭代器和最后){ 整数计数; for(;first!=

C++ 在Spirit:Qi中构建自定义表达式树(不带Utree或Boost::Variant)

首先,如果使用Boost Variant或Utree更容易,那么我将解决它们,并尝试在另一个主题中解决它们的问题。然而,我非常希望能够建造一棵像我下面这样的树 背景,如果您想直接进入问题,请忽略:我希望能够构建一个表达式树,它解析如下内容 "({a} == 0) && ({b} > 5)" 或者一个标准的数学表达式 "(2 * a) + b" 在评估我的树之前,我将定义a和b是什么,如下所示: a = 10; double val = myExpression->

C++ 链接器错误与Qt信号/插槽示例

我有一个Qt应用程序,有多个使用信号和插槽的类,它编译得很好。但是,当我在主CPP(main.CPP)文件中创建自定义类时,会出现链接器错误 以下是我使用的代码: class Counter : public QObject { Q_OBJECT public: Counter() { m_value = 0; } int value() const { return m_value; } public slots: void setValue(int va

C++ 如何获取为给定字符手动设置的图示符?

我可以使用手动选择的替代字形来使用字符。但是我怎样才能以编程方式检索该glyph ID呢 我目前使用的是IDrawingStyle::GetSpecialGlyph,但它仅在底层字符没有Unicode表示时才起作用。但是,比方说,如果我为字符U+0041ʟ删除一些替代字形ᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴀ 在使用Glyphs面板的文档中,基础字符将是U+0041,因此IDrawingStyle::GetSpecialGlyph将不起作用。如何以编程方式检索该图示符ID?您可以通过导航蜡

C++ boost::variant;std::唯一的ptr和副本

此问题确定不可复制类型不能与Boost Variant一起使用 树类 template <class T = int> class Tree{ private: class TreeNode{ public: std::unique_ptr Nodes Move constructors and move assignment + other public members

使用Luajit时,使用FFI还是使用普通lua绑定更好? 我刚刚开始用C++修炼Luajit,我发现它的FFI使用起来很简单,但我不确定它是否是所有(或至少大多数)案例中最好的解决方案。

因此,使用其中一个更好,还是只是偏好?正如LuaJIT网站上所述,通过FFI绑定的C函数调用可以进行JIT编译(而不是通过Lua C/API调用),因此就性能而言,FFI肯定更好。此外,使用FFI可以在Lua中使用原生C类型进行计算,这在某些情况下可以进一步提高性能() 使用FFI(如果您习惯于C/API)时可能遇到的一个问题是,您希望C函数返回多个值。在luac/API中,这很简单,但对于FFI,这需要一些技巧(例如为ffic调用编写包装函数)。但考虑到易用性和性能,我认为这是一个小缺点 还有

C++ 模板语法错误

编辑:修复了错误 这是我第一次使用模板,我遇到了严重的语法错误。我不知道错误在哪里,因为编译器告诉我我缺少一个分号,然后是数百个错误。然而,一切似乎都很好。我几乎可以肯定没有分号丢失 谁能帮我大海捞针吗??PS该错误发生在列表的构造函数的定义上,并表示缺少“;”在“之前,我不能保证这是唯一的问题,但这看起来确实可疑: T &List<T>::Front() const T &List<T>::Back() const void Purge(); 找到了错

C++ 返回并自动推断std::初始值设定项\u列表

在以下方面: auto x = {0}; // auto deduction of std::initializer_list<int> auto y = []() -> std::initializer_list<int> { return {0}; }(); //explicit auto z = []() { return {0}; }(); // won't compile auto x={0};//自动扣除std::初始值设定项\u列表 自动y=[]()

C++ 如何使用c+编写程序在系统中显示蜂鸣音+; 的哔哔程序

如何编写程序在使用c++的系统中显示蜂鸣音您可以这样尝试:0 cout << '\a'; coutstd::cout可能你的问题有点让人困惑,因为你不明白显示蜂鸣声是什么意思。如果你想发出蜂鸣声,那么你可以在下面找到答案,如果你的意思是其他的,那么一定要更新你的问题!!!:)你的液晶显示器有扬声器吗?在我所有的嵌入式项目中,没有一个LCD附带扬声器。尽管使用嵌入式系统,您的LCD可能会有所不同。您是否需要闪烁LCD而不是发出声音? #include <iostream>

C++ gcc是否有放弃-g标志的选项?

我正在构建一个包,它提供了许多makefile,每个makefile都有硬编码,比如 CFLAGS = -g -O2 -Wall ... CXXFLAGS = -g -O2 -Wall ... gcc -option-im-looking-for -g file.c -o file 我想放弃-g选项,但我不想编辑所有的makefile(即使不是使用sed或类似工具自动编辑)。软件包附带的configure脚本没有启用/禁用调试选项,但我可以传递CFLAGS和cxflags变量,并将它们的值分

C++ 递归函数的最小空间复杂度是否为O(N)?

我在考虑递归函数。以一个简单函数为例,递归打印链表: void print(list *list){ if(list){ cout << list->data print(list->next); } } 无效打印(列表*列表){ 如果(列表){ cout数据 打印(列表->下一步); } } 起初,这似乎是一个相当无害的函数,但它不是在每个堆栈帧中存储一个地址(用变量列表标记)吗?假设没有尾部调用优化。我们需要N个地址的空间,其中N是列表

在c+中启动另一个应用程序时并行运行一个应用程序+; 我试图编写一个应用程序,可以在Linux中用C++启动另一个应用程序。启动另一个应用程序不是问题所在。我面临的问题是,父应用程序暂停,直到子应用程序关闭。我希望父应用程序与子应用程序一起运行,以便可以使用父应用程序的更多功能。我该怎么做呢? 如果有人能给我一个关于这件事的想法,那将对我有很大帮助

该应用程序由两个文件main.cpp和一个virtualbotmain.cpp组成。部分 virtualbotmain.cpp: #include <iostream> #include <stdlib.h> VirtualBotMain::VirtualBotMain(QWidget *parent) : QWidget(parent), ui(new Ui::VirtualBotMain) { ui->setupUi(this); } void

C++ 下面显示的代码段是用Coliru和Ideone编译的,但符合iso§;8.5 p6不应';t、 还是我遗漏了什么?

根据C++11标准§8.5 p6,我们有: 如果程序调用 常数合格类型T,T应为用户提供的类别类型 默认构造函数 以下代码应该而不是编译。但在科里鲁和巴黎都是如此 编辑: 在试图理解这里发生了什么的同时,我最终得到了以下代码,可以编译(至少它符合标准,因为A有一个用户提供的构造函数)。但随后我想到了以下问题:下面哪个标准条款保证a.b.j初始化为0(参见中的代码) #包括 结构B{int j;B(){std::cout考虑到第7.1.6.1节第2段中的注释,cv限定符中有以下内容: 2[注:声明

C++ boost::filesystem::remove_all(路径)是如何工作的?

我试图使用boost::filesystem::remove_all(path)从特定路径中删除所有目录、子目录和包含的文件。我还想显示一条错误消息,以防文件在另一个程序中打开。在这种情况下,boost::filesystem::remove_all(path)是否引发异常 或者我还有别的方法可以做到这一点吗 这不适合评论,所以我将作为答案发布 只需查看来源: remove\u all\u aux是在上面几行定义的,remove\u file\u或\u directory,remove\u fi

C++ 你是如何让这个警告出现的;可疑';和'-Wmain&x27;在里面?

这确实是一个简单的问题,指的是Linux(与Windows或Mac相对) 你如何从C或C++编译器中产生一个警告消息,它必须有“可疑”一词,并且必须引用( - Wmain < /代码>)。 (更新) 谢谢Boann-我得到了一些警告,但我也得到了错误-错误:'::main'必须返回'int' 我问这个问题的原因是,一周前,我的编译器(GCC 4.8.1)发布了一条警告,说“可疑”,这是由Wmain引起的。所以我把-Wno的主要和警告去了,它编译好。就在最近,它开始抱怨说这是一个实际的错误,而不

C++ gets()函数在C+;中工作不正常+;

我用一个公共类和不同的主函数编写了两个程序 以下是代码: 普通类 #include<iostream> #include<cstring> #include<cstdio> using namespace std; class student { char *name; int *marks,avg; public: student() { int n,i,tot; tot=0; name=new char[40]

gtest安装程序cmake以使其运行 我想把GTest包含到我的C++项目中。我使用Clion作为IDE,应该可以工作。一些测试已经在运行,但我不能使用B_rochoice.h中的任何函数。它表示函数不在此范围内声明

有人能告诉我我做错了什么吗?我必须如何更改CMakeLists.txt文件以使其重新识别我的方法 这是我的,我的测试用例将在这里编写 这是我的 在这里,最外层的CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(cli) find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} ) set(CM

C++ 有没有办法使用boost::obect_池实现更快的免费操作

我已经使用boost object_pool有一段时间了,总体上对结果感到满意。以前我主要分配单个对象,但很少单独释放它们,只是一次释放整个池。最近,当我遇到需要从池中释放许多对象时,我发现这非常缓慢 显然,pool正在搜索已经发布的块列表,以链接新发布的对象。该文档讨论了有序池和无序池,并提到了池分配器和快速池分配器。无序池(使用快速内存分配器)可能会更快地释放内存块。然而,我看不出我能如何利用它 我是否正确理解,我只能在池分配器和快速池分配器之间进行选择,只能与boost::singleto

C++ 程序';在C+中,s应该生成2个介于1和9之间的随机数+;一直只生成6和9以及isn';t循环正确

这个程序需要生成2个介于1和9之间的随机数,并将它们呈现给用户,询问他们答案是什么。目的是帮助学生学习乘法表。然而,每当程序初始化时,它总是只生成要相乘的数字6和9。此外,程序应该每10个条目检查一次,看看用户是否有75%的错误率,如果没有,则继续进行另一组10个问题,如果错误率为75%,则停止。我不知道如何让它去终止,如果它满足终止要求,如果它不继续。有什么建议吗?(我也在这里查找了类似问题的答案,但我遇到了相同的6和9场景) void Miscellaneous::multiplicatio

C++ 我需要帮助使用带有类的数组

当我试图编译时,我得到一个错误“未定义对'Card::Card()'的引用”。这个程序应该在我初始化每一张卡片后打印一副卡片中的所有卡片。它必须使用OOP,所以我不需要更改它。帮助任何人 #include <iostream> #include <string> #include <ctime> using namespace std; class Card { private: string suit; string value; public: