首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-08-30 
C语言 求助,看了很久 都没弄明白的一段代码found, found_filtered的定义为:C/C++ codevectorRect found,

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();

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

热点排行