C语言 ,看了很久 都没弄明白的一段代码
C语言 求助,看了很久 都没弄明白的一段代码
found, found_filtered的定义为:
其中,Rect为一个矩阵结构,包括左上点坐标和宽、高;
不明白的一段代码如下:
开始自己理解为:过滤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();
只需要重载==和<运算符及搞定
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();
只需要重载==和<运算符及搞定