Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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++_User Interface_Data Structures_Input - Fatal编程技术网

C++ 通常用于将输入映射到显示器的数据结构是什么?

C++ 通常用于将输入映射到显示器的数据结构是什么?,c++,user-interface,data-structures,input,C++,User Interface,Data Structures,Input,我的问题是,在给定输入的情况下,如何将该输入映射到显示器的某个区域。您还可以将此视为将输入映射到GUI的小部件,但我的意图仅限于一般情况 我假设当硬件传感器/操作系统触发输入时,我得到一对[x,y]坐标 我确信用作查找表的数组就足够了,您可以创建一个2x2矩阵,其中每个元素都指向给定像素的小部件 但这种方法存在一个问题,数组是一种生锈的数据结构,根本无法扩展,我并不相信有人会使用简单的数组进行这种映射,例如,通过简单的窗口重缩放,你将不得不重新创建该数组,这是很昂贵的,在计算和内存分配方面,不考

我的问题是,在给定输入的情况下,如何将该输入映射到显示器的某个区域。您还可以将此视为将输入映射到GUI的小部件,但我的意图仅限于一般情况

我假设当硬件传感器/操作系统触发输入时,我得到一对[x,y]坐标

我确信用作查找表的数组就足够了,您可以创建一个2x2矩阵,其中每个元素都指向给定像素的小部件

但这种方法存在一个问题,数组是一种生锈的数据结构,根本无法扩展,我并不相信有人会使用简单的数组进行这种映射,例如,通过简单的窗口重缩放,你将不得不重新创建该数组,这是很昂贵的,在计算和内存分配方面,不考虑必须在内部保留小部件的层次结构和布局这一事实,因此需要一个更灵活的数据结构,可能具有随机访问能力和真正低的复杂性,大约为O1或OlogN


我想不出一个好的数据结构能很好地处理这种情况,所以GUI系统通常使用什么来将输入映射到单个像素?

我相信你想要的是一个。标签是唯一的吗?意思是如果你有一个标签,就不会有重复的标签?你不应该创建一个point类,用x和y值创建它的对象并将它们推到堆栈中吗?@amar这是内部OO编程设计的一部分,我对此不感兴趣,我只感兴趣的是如何将输入映射到窗口或小部件。只是要使用的数据结构。@AliAlamiri问题比这要复杂一点,例如,当重新缩放时,你必须重新调整布局,不,我不认为我需要一个关联容器,它很昂贵而且不适合。除非你有几十亿像素,谁在乎调整大小在像素数量上是否是“昂贵的”线性?根据任何合理的假设,您不会一直在调整大小。谢谢,我会看看这一点,同时我愿意接受其他解决方案。关于这个问题在其他GUI框架中是如何解决的,最好还是粘贴一些文本,以防链接出于某种原因处于活动状态。我知道使用四叉树是最好的方法。在实际应用程序中搜索之前,您可能能够找到特定于情况的快捷方式来修剪树,但logn仍然是最佳的渐进复杂性。我会建议查看Android的源代码,但我几乎可以保证它就是这样做的。@user2485710在我发布上一条评论后不久,我知道我不应该写我所做的。这就是我从火车上得到的写作答案。无论如何,Android采用了一种更为简单的方法来调度运动事件,只需遍历视图层次结构并检查控件帧中是否包含一个点。我想他们已经论证过,在事情变得不够简单之前最好保持简单。你能说出其中涉及的类/文件吗?