Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于线段拆分和合并的数据结构_C++_Qt_Data Structures_Computational Geometry_Recursive Datastructures - Fatal编程技术网

C++ 用于线段拆分和合并的数据结构

C++ 用于线段拆分和合并的数据结构,c++,qt,data-structures,computational-geometry,recursive-datastructures,C++,Qt,Data Structures,Computational Geometry,Recursive Datastructures,我正在编写一个Qt应用程序,以便使用GUI生成信号文件。GUI有一个画布,允许用户绘制新信号。我想要一个信号被定义为一组连续的线段,其中每个线段可以上下移动来上下移动信号 我试图找出表示信号的最佳数据结构,该结构允许在保持总信号长度不变的情况下动态更改线段数量,即用户可以选择更改信号的粒度。这意味着需要一个动态数据结构,可以添加/删除线段,更重要的是拆分和合并线段 需要一些关于什么类型的数据结构可能是最好的指针 谢谢您通常不需要复杂的递归数据结构来存储路径。只需使用一个普通的点动态数组 渲染成本

我正在编写一个Qt应用程序,以便使用GUI生成信号文件。GUI有一个画布,允许用户绘制新信号。我想要一个信号被定义为一组连续的线段,其中每个线段可以上下移动来上下移动信号

我试图找出表示信号的最佳数据结构,该结构允许在保持总信号长度不变的情况下动态更改线段数量,即用户可以选择更改信号的粒度。这意味着需要一个动态数据结构,可以添加/删除线段,更重要的是拆分和合并线段

需要一些关于什么类型的数据结构可能是最好的指针

谢谢

您通常不需要复杂的递归数据结构来存储路径。只需使用一个普通的点动态数组


渲染成本将完全占主导地位;相比之下,遍历数组以确定其长度、验证插入或删除是否合法等的成本微不足道。

什么是信号?如果没有上下文,例如屏幕截图,很难理解实际问题是什么。因此,我给出了一个非常通用的答案。将信号想象成一个方波,其中一个或多个脉冲可以通过简单地提升相应的线段来放置。我想要比普通动态阵列更复杂的东西的原因是,例如,当用户改变线段长度时,例如想要更短的脉冲信号。现在,定义的长脉冲需要分成两个线段等。我希望有一个干净的方法,基于合理的数据结构来处理这个问题。在计算几何中,我看到了树的使用,重点是寻找线段交点,我更希望处理合并和拆分。仅从数组中间删除一个项是一件O(n)的事情,即使n是数千,也完全不是问题。实际上,树的速度通常较慢,因为它们的缓存线的数据局部性差得多。避免树的复杂性,除非您有一个动态数组,否则会遇到性能问题。