能不能单while循环都不要使用
时间: 2023-10-27 22:49:51 浏览: 42
当然可以。我们可以使用单for循环来实现,而不需要使用while循环。以下是改写后的代码示例:
```cpp
void FlightStage::UpdateAllDistance2Boundary(vector<MapPoint> &rps) {
if (rps.empty()) return;
vector<pair<MapPoint, MapPoint>> lines, curves;
size_t n = rps.size();
double prevKappa = rps[0].kappa;
for (size_t i = 1; i < n; i++) {
if (Equals(rps[i].kappa, prevKappa) ||
((isnan(prevKappa) || iszero(prevKappa)) &&
(isnan(rps[i].kappa) || iszero(rps[i].kappa)))) {
continue;
}
pair<MapPoint, MapPoint> seg;
seg.first = rps[i-1];
seg.second = rps[i];
if (!isnan(seg.first.s) && !isnan(seg.second.s)) {
seg.first.point_enu.z = 0.0;
seg.second.point_enu.z = 0.0;
(isnan(seg.first.kappa) || iszero(seg.first.kappa)) ?
lines.emplace_back(seg) : curves.emplace_back(seg);
}
prevKappa = rps[i].kappa;
}
// Handle the last segment
pair<MapPoint, MapPoint> seg;
seg.first = rps[n-1];
seg.second = rps[n-1];
if (!isnan(seg.first.s) && !isnan(seg.second.s)) {
seg.first.point_enu.z = 0.0;
seg.second.point_enu.z = 0.0;
(isnan(seg.first.kappa) || iszero(seg.first.kappa)) ?
lines.emplace_back(seg) : curves.emplace_back(seg);
}
}
```
通过使用单for循环,我们可以在遍历rps的过程中进行判断和处理,避免了使用双while循环。