小编Gli*_*tch的帖子

将相邻矩形合并为多​​边形的算法

我想我的问题与"凸壳"有关,但不一样.图中的所有形状都是具有相同宽度和高度的矩形.许多人彼此相邻.我想将那些相邻的矩形组合成多边形.与"凸包"不同,被修复的多边形可能在内部是"空心的".

有没有可用的开源算法?

geometry polygon

15
推荐指数
2
解决办法
2万
查看次数

您是否仍然在C++程序中捕获内存分配失败

我正在为公司写一些指导方针,我需要回答一些棘手的问题.这个很难.

解决方案可以是:

  1. 根本不跟踪.确保使用new分配对象,这将在分配失败时引发异常.该应用程序将死亡,这不是什么大不了的事.PRO - 代码通常可以非常干净.

  2. 跟踪内存分配失败并相应地报告,就像任何错误(例如文件访问错误)一样.

老实说,如果我们使用选项2,我必须编写更多代码.例如,许多std :: tring操作涉及内存分配.如

std :: string str1,str2; str1 = str2; str + = str2;

我们的软件将始终运行主要平台,而不是嵌入式.不知怎的,我认为选项1是要走的路.你怎么看?

c++ memory-management

9
推荐指数
4
解决办法
2338
查看次数

C API函数的样式

我正在开发一个支持多种编程环境的库,如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*,这样用户就不需要删除缓冲区.

你喜欢哪种风格?还有原因吗?

c c++ api

8
推荐指数
3
解决办法
1305
查看次数

标签 统计

c++ ×2

api ×1

c ×1

geometry ×1

memory-management ×1

polygon ×1