VC++关于动态数组问题
我想写一个类似在一个屏幕矩形范围内找某个颜色值的点的个数并将所有找到的点的坐标保存到一个POINT数组中 矩形范围内这样的颜色值的点的个数是不确定的有可能没有一...
我想写一个类似 在一个屏幕矩形范围内找某个颜色值的点的个数 并将所有找到的点的坐标保存到一个POINT数组中 矩形范围内这样的颜色值的点的个数是不确定的 有可能没有一个 也可能是上万个 数组在声明是好像是说要用常量来确定长度的 1440*900的屏幕最大可能有上百万的点 我也不可能一开始就声明那么长的吧 为了节省资源 最希望的当然是找出一个点就让那数组长度增加1了 然后再保存它的坐标了 但是不知道怎么实现或者能不能实现 希望高手们能给小弟点高见?!下面是我写的一段代码 不过貌似后面需要用到那些点的坐标时有点问题~ POINT *pts; int xtmp=x1,countP=0,countB=0; for(;y1<y2;y1++) for(x1=xtmp;x1<=x2;x1++) if(GetScrPixel(x1,y1)==color) { countP++; pts=new POINT[countP]; (*(pts+countP)).x=x1-x; (*(pts+countP)).y=y1-y; } for(int i=1;i<=countP;i++) if(CompareEx(*(pts+i),backcolor,errorcount)) countB++; 前面一段代码运行正常 countP数值正确但是在下面一段实用它时 除了最后一个点的数值能得到以外 前面的都没了请高手指点一下
展开
1个回答
展开全部
你的问题不难解决,你可以用动态内在分配功能。比如开始用new分得长度为10的数组p,在找到第十个点存储之后,再用new申请一个比p大十的数组pp,把p的内容拷到pp中,再用delete把p删除;等找到第二十个点存储后,用同样的方法启用p而把pp删除。如此往复,你的数组最大浪费也不过十个元素的空间!当然你要是每次不增加10个元素而只增加5个,那浪费就不超过5个元素的空间了。还可以用链表,可链表结点的结构中必须有指向下一个结点的指针,它要占4个字节,对你这样只存放一个点坐标的数组来说,内在资源的利用并不经济。我这两天碰到了同样的问题,想了许久,用此方法,只一个字——爽!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询