可以不使用const auto& 嘛
时间: 2024-03-13 12:46:21 浏览: 66
可以不使用 `const auto&`,而改用 `vector<Point>::const_iterator` 或 `vector<Point>::iterator` 来遍历轮廓点,示例如下:
```cpp
// 筛选上半部分的轮廓点
int height = img.rows;
int half_height = height / 2;
vector<vector<Point>> filtered_contours;
for (vector<vector<Point>>::iterator it = contours.begin(); it != contours.end(); ++it) {
vector<Point> filtered_contour;
for (vector<Point>::const_iterator pit = it->begin(); pit != it->end(); ++pit) {
if (pit->y < half_height) {
filtered_contour.push_back(*pit);
}
}
if (!filtered_contour.empty()) {
filtered_contours.push_back(filtered_contour);
}
}
```
这样,我们就可以使用迭代器来遍历轮廓点了。不过,需要注意的是,在遍历 `vector` 容器时,使用 `const_iterator` 或 `iterator` 都是可以的,但是建议使用 `const_iterator`,因为它可以防止对容器内容进行修改,从而提高程序的安全性。
阅读全文