标签: C++
garbage-collection
我个人听说的唯一一个是我确信其他的存在,但我没有处理它们(或寻找它们)。该库包含一些共享的东西,基本上充当引用计数垃圾收集器。如果你接受C++设计的原理,那将自动满足你对“垃圾收集器”的需求。 < P>列出了几个C++ GC。
不过,我不使用任何,RAII也是我的朋友。 < P>垃圾机对C来说非常好,但是在C++下使用很棘手。请查看上的“C++接口”部分
我的意见是,如果您需要垃圾收集,请选择内置垃圾收集功能的语言
< > C++的最佳通用解决方案是共享指针(例如从Boost)处理循环依赖关系。
我正在做一个MFC程序,它早在VC6时代就开始了。当时有一个类向导,它使用注释中的一堆装饰器和标记来解析类文件
例如,它将在其维护的消息处理程序前面插入afx_msg。它将用/{AFX_MSG_MAP(TheApp)和/}}AFX_MSG_MAP注释标记一个代码块,以帮助它找到它想要处理的消息映射的部分
好了,这已经不需要了。除此之外,类向导还有很多缺点,我们不得不对这些托管块进行大量手动编辑,而且我们从来没有经常使用它
是否还有其他原因继续使用afx_msg及其同类产品 AFAIK,afx_味
我正在尝试使用并行化来提高绘制具有有序对象的三维场景的刷新率。场景绘制算法首先递归地遍历对象树,并由此构建绘制场景所需的基本数据的有序数组。然后它多次遍历该数组以绘制对象/覆盖,等等。因为我读到的OpenGL不是线程安全的API,我假设数组遍历/绘制代码必须在主线程上完成,但我认为我可能能够并行化填充数组的递归函数。关键在于数组必须按照对象在场景中出现的顺序填充,因此所有将给定对象与数组索引关联的功能都必须按照正确的顺序完成,但是一旦分配了数组索引,我就可以填充该数组元素的数据(这不一定是一个简
关于quantlib()有好的入门文档吗?这些例子没有很好的文档记录,帮助也没有提供那么多的见解。当然有
数百个单元测试
十几个或更多的例子
超过1000页的Doxygen生成的文档
Luigi(首席开发商)起草的几份
所有这些都很复杂,因为主题很复杂。不免费午餐定理似乎也适用于代码;-)
感谢您添加quantlib标签。我们这里应该还有一些问题 Quantlib的创建者在网络上非常活跃,因此如果你在那里问一个具体的问题,他们很可能会回答。你可以访问。我发布了两个依赖于QL的示例代码
我的代码如下
template <typename T>
class name
{
public:
name() : h_(0){}
template <typename U>
operator name<U>()
{
name<U> u;
u.h_ = h_;
return u;
}
private:
int h_;
};
int main(vo
我一直被教导在编程中几乎从不使用goto语句。然而,我们需要这样做,作为我最近的编程项目的一部分。我有一个带有各种goto语句的if/else语句,goto语句无法执行。我不知道为什么。任何帮助都将不胜感激
int myInt = XXXXXXX;
if((myInt>>22) & 7 == X)
goto a;
else if((myInt>>22) & 7 == Y)
g
在cpp文件中对函数进行外部化时,编译器是否会对这些函数进行不同的处理
extern void foo(char * dataPtr);
void foo(char *);
extern void foo(char * );
我想知道,因为我已经看到了所有这些代码,而不知道区别是什么。 ExtXN/COD>是C++函数的默认链接。这三个声明之间没有区别。没有。它们都是相同的函数。只有一个函数,即具有此签名:
void foo(char *);
有没有关键字extern,其他两个的存
我有一个简单的程序,它创建一个线程,并等待线程结束,然后程序也结束。当我用C(gcc)编译器编译这个程序,并用valgrind检查它时,没有问题,但当我用C++(g++)编译器编译它,并用valgrind检查它时,它表明我的程序有内存泄漏。有什么问题吗
这是我的节目
#include <pthread.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <
当用户单击窗口上的关闭按钮时,我需要中断一个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) {
}
有关所有详细信息,请参阅
如何从time.h重新初始化timeval结构
我知道我可以将结构的两个成员都重置为零,但我是否忽略了其他方法?您可以使用memset,然后您还可以将任何特定于平台的成员重置为零。如果您正在寻找一个单行程序,我想您也可以使用memset来完成这项工作:
struct timeval myTime;
/* snip ... myTime is now initialized to something */
memset(&myTime, 0, sizeof(timeval)); //
我有一个.h文件,其中数百个常量被定义为宏:
#define C_CONST_NAME Value
我需要的是一个可以动态获取其中一个常量值的函数
所需的函数标题:
int getConstValue(char * constName);
这在语言中可能吗
----编辑
谢谢你的帮助,这很快:)
正如我所想,没有奇迹般的解决办法来满足我的需求
事实上,我使用的头文件是由“SCADE:”生成的
我从@Chris那里得到的一个解决方案是使用一些python来生成完成这项工作的c代码
现在我需要做
我正在编写一个程序,从命令行将信号的名称(例如SIGSTOP、SIGKILL等)读取为字符串,并调用kill()系统调用来发送信号。我想知道是否有一种将字符串转换为信号代码的简单方法(在signal.h中)
目前,我正在编写自己的地图,如下所示:
signal_map["SIGSTOP"] = SIGSTOP;
signal_map["SIGKILL"] = SIGKILL;
....
但是为所有的信号写这篇文章是很乏味的。所以,我在寻找一种更优雅的方式,如果它存在的话。不确定这是否就是你想要
以下是我的理解:
执行这一行时,临时变量将被销毁并
指未定义的变量。在这个过程中,没有
调用复制构造函数
那么,为什么我们仍然可以发布以下声明并获得结果呢
af refers to a temporary variable ClassB(1) and after the
const此处可延长正在创建的临时对象(即ClassB(1))的使用寿命。它的作用域持续到af超出作用域
const ClassB &af = ClassB(1);
这是因为,af只不过是通过将1传递给其构造函数而构
这确实发生在实验版本的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
我在使用boost系列化库时遇到调试器错误。为了解决这些问题,我试图让VisualStudio10跳过对boost库的调试,在阅读了som之后,我发现了如何实现这一点,但解决方案不知何故不起作用。这是一张regedit的图片
据我所知,这是一种方法,但在VS10中调试时,它仍然会在boost文件上给我错误。有人能看出我做错了什么吗
编辑
发现解决方案有问题,是在regedit的32位部分,而不是我的系统所在的64位部分。然而,改变这一点并没有解决问题。这是一张新照片
这里有一篇相关的帖子,可以
我有一些代码定期调用recv()(带有MSG\u DONTWAIT标志)。我很好奇,因为在vtune中评测代码时,我看到一个与recv()相关联的sigprocmask()调用,执行该调用占用了总时间的很大一部分。我很好奇为什么recv()正在调用sigprocmask()可能是为了让recv知道是否生成了相关的信号,否则,如果所述信号被阻止,就看不到这些信号。EAGAIN/EWOOLDLOCK在脑海中是errno的值,有时使用可能被阻塞的信号生成。您看过吗?在linux下使用TCP套接字时,如
Uhm。。。我敢打赌,您可以通过将转换嵌入到二进制谓词中,转换元素并在转换后累积来实现这一点
struct times2accumulator {
int operator()( int oldvalue, int newvalue ) const {
return oldvalue + 2*newvalue;
}
};
int r = std::accumulate( v.begin(), v.end(), 2, times2accumulator() );
该函子相
为什么不将first作为引用和常量传递
template <typename Iterator>
int distance(Iterator first, const Iterator & last) {
int count;
for ( ; first != last; first++)
count++;
return count;
}
模板
int距离(迭代器优先、常量迭代器和最后){
整数计数;
for(;first!=
标签: C++
Parsing
expression-treesboost-spiritboost-spirit-qi
首先,如果使用Boost Variant或Utree更容易,那么我将解决它们,并尝试在另一个主题中解决它们的问题。然而,我非常希望能够建造一棵像我下面这样的树
背景,如果您想直接进入问题,请忽略:我希望能够构建一个表达式树,它解析如下内容
"({a} == 0) && ({b} > 5)"
或者一个标准的数学表达式
"(2 * a) + b"
在评估我的树之前,我将定义a和b是什么,如下所示:
a = 10;
double val = myExpression->
我有一个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
我可以使用手动选择的替代字形来使用字符。但是我怎样才能以编程方式检索该glyph ID呢
我目前使用的是IDrawingStyle::GetSpecialGlyph,但它仅在底层字符没有Unicode表示时才起作用。但是,比方说,如果我为字符U+0041ʟ删除一些替代字形ᴀᴛɪɴ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀ ᴀ 在使用Glyphs面板的文档中,基础字符将是U+0041,因此IDrawingStyle::GetSpecialGlyph将不起作用。如何以编程方式检索该图示符ID?您可以通过导航蜡
此问题确定不可复制类型不能与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绑定的C函数调用可以进行JIT编译(而不是通过Lua C/API调用),因此就性能而言,FFI肯定更好。此外,使用FFI可以在Lua中使用原生C类型进行计算,这在某些情况下可以进一步提高性能()
使用FFI(如果您习惯于C/API)时可能遇到的一个问题是,您希望C函数返回多个值。在luac/API中,这很简单,但对于FFI,这需要一些技巧(例如为ffic调用编写包装函数)。但考虑到易用性和性能,我认为这是一个小缺点
还有
考虑以下代码:
#include <memory>
#include <future>
using namespace std;
template <typename T, typename Work>
void Test2(future<T> f, Work w)
{
async([](future<T> && f, Work w)
{}, move(f), move
编辑:修复了错误
这是我第一次使用模板,我遇到了严重的语法错误。我不知道错误在哪里,因为编译器告诉我我缺少一个分号,然后是数百个错误。然而,一切似乎都很好。我几乎可以肯定没有分号丢失
谁能帮我大海捞针吗??PS该错误发生在列表的构造函数的定义上,并表示缺少“;”在“之前,我不能保证这是唯一的问题,但这看起来确实可疑:
T &List<T>::Front() const
T &List<T>::Back() const
void Purge();
找到了错
在以下方面:
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++的系统中显示蜂鸣音您可以这样尝试:0
cout << '\a';
coutstd::cout可能你的问题有点让人困惑,因为你不明白显示蜂鸣声是什么意思。如果你想发出蜂鸣声,那么你可以在下面找到答案,如果你的意思是其他的,那么一定要更新你的问题!!!:)你的液晶显示器有扬声器吗?在我所有的嵌入式项目中,没有一个LCD附带扬声器。尽管使用嵌入式系统,您的LCD可能会有所不同。您是否需要闪烁LCD而不是发出声音?
#include <iostream>
我正在构建一个包,它提供了许多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变量,并将它们的值分
我在考虑递归函数。以一个简单函数为例,递归打印链表:
void print(list *list){
if(list){
cout << list->data
print(list->next);
}
}
无效打印(列表*列表){
如果(列表){
cout数据
打印(列表->下一步);
}
}
起初,这似乎是一个相当无害的函数,但它不是在每个堆栈帧中存储一个地址(用变量列表标记)吗?假设没有尾部调用优化。我们需要N个地址的空间,其中N是列表
该应用程序由两个文件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++
C++11
language-lawyerdefault-constructor
根据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[注:声明
我试图使用boost::filesystem::remove_all(path)从特定路径中删除所有目录、子目录和包含的文件。我还想显示一条错误消息,以防文件在另一个程序中打开。在这种情况下,boost::filesystem::remove_all(path)是否引发异常
或者我还有别的方法可以做到这一点吗 这不适合评论,所以我将作为答案发布
只需查看来源:
remove\u all\u aux是在上面几行定义的,remove\u file\u或\u directory,remove\u fi
代码如下:
template <class T>
class List
{
private:
T *value, *valueHelper;
int valueSize;
public:
int size;
List()
{
valueSize = 2;
value = new T[valueSize];
size = 0;
}
void Add(T val)
{
size++;
if (size > v
这确实是一个简单的问题,指的是Linux(与Windows或Mac相对)
你如何从C或C++编译器中产生一个警告消息,它必须有“可疑”一词,并且必须引用( - Wmain < /代码>)。
(更新)
谢谢Boann-我得到了一些警告,但我也得到了错误-错误:'::main'必须返回'int'
我问这个问题的原因是,一周前,我的编译器(GCC 4.8.1)发布了一条警告,说“可疑”,这是由Wmain引起的。所以我把-Wno的主要和警告去了,它编译好。就在最近,它开始抱怨说这是一个实际的错误,而不
我用一个公共类和不同的主函数编写了两个程序
以下是代码:
普通类
#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]
有人能告诉我我做错了什么吗?我必须如何更改CMakeLists.txt文件以使其重新识别我的方法
这是我的,我的测试用例将在这里编写
这是我的
在这里,最外层的CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(cli)
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
set(CM
我已经使用boost object_pool有一段时间了,总体上对结果感到满意。以前我主要分配单个对象,但很少单独释放它们,只是一次释放整个池。最近,当我遇到需要从池中释放许多对象时,我发现这非常缓慢
显然,pool正在搜索已经发布的块列表,以链接新发布的对象。该文档讨论了有序池和无序池,并提到了池分配器和快速池分配器。无序池(使用快速内存分配器)可能会更快地释放内存块。然而,我看不出我能如何利用它
我是否正确理解,我只能在池分配器和快速池分配器之间进行选择,只能与boost::singleto
这个程序需要生成2个介于1和9之间的随机数,并将它们呈现给用户,询问他们答案是什么。目的是帮助学生学习乘法表。然而,每当程序初始化时,它总是只生成要相乘的数字6和9。此外,程序应该每10个条目检查一次,看看用户是否有75%的错误率,如果没有,则继续进行另一组10个问题,如果错误率为75%,则停止。我不知道如何让它去终止,如果它满足终止要求,如果它不继续。有什么建议吗?(我也在这里查找了类似问题的答案,但我遇到了相同的6和9场景)
void Miscellaneous::multiplicatio
当我试图编译时,我得到一个错误“未定义对'Card::Card()'的引用”。这个程序应该在我初始化每一张卡片后打印一副卡片中的所有卡片。它必须使用OOP,所以我不需要更改它。帮助任何人
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
class Card
{
private:
string suit;
string value;
public:
错误:无法将'std::string{aka std::basic_string}'转换为
参数“1”的“char”到“bool arecardesbalanced(char*)”
如果(括号平衡(str))
我的代码:
bool areParenthesesBalanced(char expr[])
{
stack<char> s;
char a, b, c;
for (int i=0; i<strlen(expr); i++)
{
我的任务是在向量中存储二叉树。在每个节点中存储一个int-ID、int-Age和一个字符串名
节点在向量中按ID存储和组织
当在向量中存储二叉树时,我使用算法2i和2i+1分别指定节点的左和右子节点
我已经设法创建了一个我认为满足这些条件的insert方法,但是由于某种原因,当试图打印向量的值时,我似乎得到了负值。对于这个特定的示例,我插入以下值
50 21蒂姆
75 22史蒂夫
30 40埃里克
20 35玛丽
100 60朱迪
在插入这四个值之后,我尝试使用find()方法查找Eric,其中
我尝试使用scanf直接读取输入值,而不是在结构中使用数值0初始化变量。它不起作用,但我不明白为什么
我想知道这是否与使用&(p1.first)无效这一事实有关,因为内存空间尚未分配?如果是这样,那么在初始化之后(如下面的注释代码中),通过重写scanf语句来更新my struct变量值的唯一方法是什么
#include <iostream>
using namespace std;
typedef struct {
int first;
int second;
} sc
在创建了一个窗口并在其中绘制了一些形状之后,我意识到我不能指出一点,而只是将其显示在窗口上。我查了手册,但什么也查不出来。我正在使用fltk 1.3.0。我该怎么做呢?Fltk附带了一系列有用的示例项目。如果查看line_样式示例,可以很容易地将其简化为以下绘图点:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/fl_draw.H>
class TestWindow : public Fl
显示整个字典功能
void dictionary::find(string word)
{
int index=hashf(word);
int flag=0;
node *start=head[index];
while(start!=NULL)
{
if(start->key==word)
{
flag=1;
我有一个抽象类,它有两个变量。我想通过构造函数实例化这些变量
然后我想从子类构造函数中实例化这些变量,但这会给我一个强制转换错误吗
#ifndef Employee_Interface_H
#define Employee_Interface_H
#include <iostream>
using namespace std;
class Employee {
private:
double salary = 0;
double sales = 0;
d
守则:
#define UNICODE
#define GLEW_STATIC
#include <windows.h>
#include <dwmapi.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <glew.h>
LRESULT CALLBACK wnd_proc(HWND hWnd, UINT uMsg, WPARAM
我不知道如何为turn()编写代码,以便将方向从左向右或从左向右进行更改。请帮忙!我刚开始学习C++。
[![my.h file][2][2]当前位置在move()中更改
它总是增加1,因此它总是朝一个方向移动
方向目前对位置没有影响
您应该更改move()以按方向增加位置。这看起来像position+=direction
现在位置随着方向的改变而改变,但目前方向根据位置而改变,情况不应如此
您应该更改turn()以反转方向,因此如果它是1则将其更改为-1,反之亦然。将当前定义替换为direc
我不知道如何安装或修复它。我没有chromebook,因此无法验证:
sudo apt update
sudo apt upgrade
sudo apt install build-essential
sudo apt install software-properties-common
sudo apt install gcc g++
取决于Linux发行版。应该有一个软件包管理器,它将为您下载、安装和配置GCC。这是windows版的,我在Chromebook上。对于robert来说
标签: C++
staticc++14method-chaining
我正在实现一个解析器库,希望用户通过方法链接定义解析器。但是,当通过头文件中的方法链接进行定义,然后在.cpp中调用时,它将返回分段错误,因为中间结果不是静态的。如果我把它们分解成静态变量,它就会起作用
是否有一种解决方法,可以通过方法链接来定义我的解析器,而不必这么冗长
static Parser<int> term1 = binop_add.alt(binop_sub).map<int>(int_of_either_ints);
// segmentation fau
我正在开发一个库,它允许用户设置一个重要的类型别名,或者通过预处理器指令进行设置。
根据设计,此类型别名(或指令)未在库中声明。因此,在开发代码时,对于这种未声明的类型,我会收到恼人的错误消息和扭曲。如果我在某个地方为它声明一个临时类型,这是可以避免的。但是,我不喜欢在处理代码时声明它,然后在发布代码时将其删除。它也容易出现bug,因为我很容易忘记删除它
我的问题是:我可以为VS代码的静态分析(IntelliSense?C/C++扩展)定义预处理器指令吗
这会让我考虑分析,就像一个定义好的类型别
1 2 3 4 5 6 ...
下一页 最后一页 共 8539 页