读书人

C语言 看了很久 都没弄明白的一段代

发布时间: 2012-08-30 09:55:54 作者: rapoo

C语言 求助,看了很久 都没弄明白的一段代码
found, found_filtered的定义为:

C/C++ code
vector<Rect> found, found_filtered;

其中,Rect为一个矩阵结构,包括左上点坐标和宽、高;
不明白的一段代码如下:
C/C++ code
 unsigned int i, j;for( i = 0; i < found.size(); i++ ){    Rect r = found[i];    for( j = 0; j < found.size(); j++         if( j != i && (r & found[j]) == r)            break;    if( j == found.size() )        found_filtered.push_back(r);}


开始自己理解为:过滤found数组中的元素,将任何具有相同元素的都过滤掉,从而使found_filtered中所有元素均不相同,同时也没丢失元素。比如{0, 1, 1, 2, 3, 3, 4};过滤后变成{0, 1, 2, 3, 4};(只是举例,实际数组结构元素肯定不是int值)但是单步进去,发现不是这样的,没弄明白,希望各位能给分析分析,到底是什么样的目的

[解决办法]
{0, 1, 1, 2, 3, 3, 4};
过滤后只剩下4
[解决办法]
探讨

& 怎么重载的?

[解决办法]
按我的理解是把所有子矩形,也即包含在别的矩形里的矩形找出来吧。

Rect的&操作按字面理解应该是求矩形的交集的。
[解决办法]
楼主要过滤元素干嘛不用stl的算法呢

先sort();
后unique();

只需要重载==和<运算符及搞定

读书人网 >C++

热点推荐