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

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
------解决方案--------------------
探讨

&amp; 怎么重载的?

------解决方案--------------------
按我的理解是把所有子矩形,也即包含在别的矩形里的矩形找出来吧。

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

先sort();
后unique();

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