stream-line code in PolylineCompressor, apply range-based for loop again

This commit is contained in:
Dennis Luxen 2014-06-30 15:10:28 +02:00
parent 7817384e3c
commit 186ad5d444

View File

@ -76,17 +76,13 @@ JSON::String PolylineCompressor::printEncodedString(const std::vector<SegmentInf
std::vector<int> delta_numbers; std::vector<int> delta_numbers;
if (!polyline.empty()) if (!polyline.empty())
{ {
FixedPointCoordinate last_coordinate = polyline[0].location; FixedPointCoordinate last_coordinate = FixedPointCoordinate{0, 0};
delta_numbers.emplace_back(last_coordinate.lat); for (const auto &segment : polyline)
delta_numbers.emplace_back(last_coordinate.lon);
// iterate after skipping the first, already handled, segment
for (auto it = ++polyline.cbegin(); it != polyline.cend(); ++it)
{ {
const auto &segment = *it;
if (segment.necessary) if (segment.necessary)
{ {
int lat_diff = segment.location.lat - last_coordinate.lat; const int lat_diff = segment.location.lat - last_coordinate.lat;
int lon_diff = segment.location.lon - last_coordinate.lon; const int lon_diff = segment.location.lon - last_coordinate.lon;
delta_numbers.emplace_back(lat_diff); delta_numbers.emplace_back(lat_diff);
delta_numbers.emplace_back(lon_diff); delta_numbers.emplace_back(lon_diff);
last_coordinate = segment.location; last_coordinate = segment.location;