小编ope*_*as2的帖子

如何在PHP中执行有向图绘制?

我正在寻找一种在PHP中绘制有向图的方法.(如http://upload.wikimedia.org/wikipedia/commons/0/08/Directed_acyclic_graph.png).我希望它能像GD一样输出图像来创建图形图像.

我在这上面搜索了很多,但我只能找到很多用于绘制图形的库(带条等),而不是有向图.

PS我试过通过system()使用dot(linux程序),但不幸的是我没有权限在服务器上这样做.此外,我没有权利在服务器上安装PHP扩展和类似的东西,所以它应该使用普通的PHP(理想情况下只包括一个文件).

提前致谢.

php graphics graph-theory directed-graph

6
推荐指数
1
解决办法
5205
查看次数

如何(深)复制const对象的地图

我有另一个问题,我似乎无法解决......,或在这个网站上找到...

我有一个带有地图的对象(称为DataObject),声明如下:

std::map<size_t, DataElement*> dataElements;
Run Code Online (Sandbox Code Playgroud)

现在我有一个复制功能(在复制构造函数中使用):

void DataObject::copy(DataObject const &other) {

    //here some code to clean up the old data in this object...

    //copy all the elements:
    size = other.getSize();
    for(size_t i = 0; i < size; ++i) {
            DataElement* dat = new DataElement(*other.dataElements[i]);
            dataElements[i] = dat;
    }

}
Run Code Online (Sandbox Code Playgroud)

这不能编译,因为在const对象上不能使用dataElements [i].如何对const对象拥有的地图中的所有元素进行深层复制?

我知道在const映射上可以使用find()函数,但是如何获取我想要复制的实际对象?

c++ stl const map deep-copy

3
推荐指数
1
解决办法
6514
查看次数

析构函数成功时,delete []操作如何崩溃?(在C++中)

我有一个类Foo,它有一个(简单的)析构函数.

其他一些类包含一个Foo对象数组(称为foolist),在该类的析构函数中,我这样做:

delete[] foolist;
Run Code Online (Sandbox Code Playgroud)

这崩溃了(gdb显示它在这个确切的行中崩溃).然而,通过使用打印输出,我看到愚蠢的所有元素都在没有问题地完成它们的析构函数(运行的析构函数的数量也等于在这个数组中分配的对象的数量,所以它们都被破坏了).代码中也没有其他的傻瓜删除.

我还确保傻瓜确实被初始化为数组,这样:

foolist = new Foo[number];
Run Code Online (Sandbox Code Playgroud)

错误是:

*** glibc detected *** /home/bas/projects/trunk/main:
free(): invalid next size (fast): 0x080a0e80 ***
Run Code Online (Sandbox Code Playgroud)

在这种情况下,什么可能导致delete []崩溃?

提前致谢!

还要问valgind的输出(statementNode是Foo,programNode是包含Foo列表的类)

==4111== 1 errors in context 1 of 2:
==4111== Invalid write of size 4
==4111==    at 0x804B6FA: Parser::parseProgram(std::string) (statementnode.h:35)
==4111==    by 0x80764D4: main (parser.h:35)
==4111==  Address 0x42d9bdc is 4 bytes after a block of size 32 alloc'd
==4111==    at 0x4025F53: operator new[](unsigned int) (vg_replace_malloc.c:299)
==4111==    by 0x804A81E: Parser::parseProgram(std::string) (programnode.h:21)
==4111==    by 0x80764D4: main …
Run Code Online (Sandbox Code Playgroud)

c++ arrays destructor memory-management delete-operator

3
推荐指数
2
解决办法
1250
查看次数

C++循环引用问题

我有2个班级:DataObjectDataElement.DataObject保持指针(只)DataElementS,和一个DataElement包含指向几种类型,其中一个DataObject.

这曾经没有问题,因为我只使用指针DataObject输入DataElement,所以DataObject在标题中的前向声明DataElement就足够了.

但是,现在,我尝试添加一个析构函数DataElement,我需要删除一个DataObject.在这方面,编译器说:

dataelement/destructor.cc: In destructor ‘DataElement::~DataElement()’:
dataelement/destructor.cc:8: warning: possible problem detected in invocation of delete operator:
dataelement/destructor.cc:8: warning: invalid use of incomplete type ‘struct DataObject’
dataelement/dataelement.h:7: warning: forward declaration of ‘struct DataObject’
dataelement/destructor.cc:8: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined. …
Run Code Online (Sandbox Code Playgroud)

c++ destructor class-design circular-dependency forward-declaration

0
推荐指数
1
解决办法
3255
查看次数