我想我的问题与"凸壳"有关,但不一样.图中的所有形状都是具有相同宽度和高度的矩形.许多人彼此相邻.我想将那些相邻的矩形组合成多边形.与"凸包"不同,被修复的多边形可能在内部是"空心的".
有没有可用的开源算法?
我正在为公司写一些指导方针,我需要回答一些棘手的问题.这个很难.
解决方案可以是:
根本不跟踪.确保使用new分配对象,这将在分配失败时引发异常.该应用程序将死亡,这不是什么大不了的事.PRO - 代码通常可以非常干净.
跟踪内存分配失败并相应地报告,就像任何错误(例如文件访问错误)一样.
老实说,如果我们使用选项2,我必须编写更多代码.例如,许多std :: tring操作涉及内存分配.如
std :: string str1,str2; str1 = str2; str + = str2;
我们的软件将始终运行主要平台,而不是嵌入式.不知怎的,我认为选项1是要走的路.你怎么看?
我正在开发一个支持多种编程环境的库,如VB6和FoxPro.我必须坚持C约定,因为它是最低的共同点.现在我对这个风格有疑问.
假设函数进程输入并返回一个字符串.在此过程中,可能会发生错误.目前提出的风格是这样的:
int func(input params... char* buffer, unsigned int* buffer_size);
Run Code Online (Sandbox Code Playgroud)
这种风格的好处是原型中包含了所有内容,包括错误代码.并且可以避免内存分配.问题是该功能非常冗长.并且因为buffer_size可以是any,所以需要更多的代码来实现.
另一种选择是返回char*,并返回NULL以指示错误:
char* func(input params...);
Run Code Online (Sandbox Code Playgroud)
此样式需要调用者删除缓冲区.内存分配是必需的,因此服务器程序可能会遇到内存碎片问题.
第二个选项的变体是使用线程局部变量来保存返回的指针char*,这样用户就不需要删除缓冲区.
你喜欢哪种风格?还有原因吗?