@@ -269,11 +269,10 @@ void Triangulation::calculate_boundaries()
269269 auto it = boundary_edges.cbegin ();
270270 int tri = it->tri ;
271271 int edge = it->edge ;
272- _boundaries.push_back (Boundary ());
273- Boundary& boundary = _boundaries.back ();
272+ Boundary& boundary = _boundaries.emplace_back ();
274273
275274 while (true ) {
276- boundary.push_back ( TriEdge ( tri, edge) );
275+ boundary.emplace_back ( tri, edge);
277276 boundary_edges.erase (it);
278277 _tri_edge_to_boundary_map[TriEdge (tri, edge)] =
279278 BoundaryEdge (_boundaries.size ()-1 , boundary.size ()-1 );
@@ -624,7 +623,7 @@ void TriContourGenerator::clear_visited_flags(bool include_boundaries)
624623 // Initialise _boundaries_visited.
625624 _boundaries_visited.reserve (boundaries.size ());
626625 for (const auto & boundary : boundaries) {
627- _boundaries_visited.push_back ( BoundaryVisited ( boundary.size () ));
626+ _boundaries_visited.emplace_back ( boundary.size ());
628627 }
629628
630629 // Initialise _boundaries_used.
@@ -798,8 +797,7 @@ void TriContourGenerator::find_boundary_lines(Contour& contour,
798797 if (startAbove && !endAbove) {
799798 // This boundary edge is the start point for a contour line,
800799 // so follow the line.
801- contour.push_back (ContourLine ());
802- ContourLine& contour_line = contour.back ();
800+ ContourLine& contour_line = contour.emplace_back ();
803801 TriEdge tri_edge = *itb;
804802 follow_interior (contour_line, tri_edge, true , level, false );
805803 }
@@ -832,8 +830,7 @@ void TriContourGenerator::find_boundary_lines_filled(Contour& contour,
832830
833831 if (decr_lower || incr_upper) {
834832 // Start point for contour line, so follow it.
835- contour.push_back (ContourLine ());
836- ContourLine& contour_line = contour.back ();
833+ ContourLine& contour_line = contour.emplace_back ();
837834 TriEdge start_tri_edge = boundary[j];
838835 TriEdge tri_edge = start_tri_edge;
839836
@@ -861,8 +858,7 @@ void TriContourGenerator::find_boundary_lines_filled(Contour& contour,
861858 const Boundary& boundary = boundaries[i];
862859 double z = get_z (triang.get_triangle_point (boundary[0 ]));
863860 if (z >= lower_level && z < upper_level) {
864- contour.push_back (ContourLine ());
865- ContourLine& contour_line = contour.back ();
861+ ContourLine& contour_line = contour.emplace_back ();
866862 for (auto edge : boundary) {
867863 contour_line.push_back (triang.get_point_coords (
868864 triang.get_triangle_point (edge)));
@@ -896,8 +892,7 @@ void TriContourGenerator::find_interior_lines(Contour& contour,
896892 continue ; // Contour does not pass through this triangle.
897893
898894 // Found start of new contour line loop.
899- contour.push_back (ContourLine ());
900- ContourLine& contour_line = contour.back ();
895+ ContourLine& contour_line = contour.emplace_back ();
901896 TriEdge tri_edge = triang.get_neighbor_edge (tri, edge);
902897 follow_interior (contour_line, tri_edge, false , level, on_upper);
903898
@@ -1436,10 +1431,10 @@ TrapezoidMapTriFinder::initialize()
14361431
14371432 // Set up edges array.
14381433 // First the bottom and top edges of the enclosing rectangle.
1439- _edges.push_back ( Edge (&_points[npoints], &_points[npoints+1 ], -1 , -1 ,
1440- nullptr , nullptr ) );
1441- _edges.push_back ( Edge (&_points[npoints+2 ], &_points[npoints+3 ], -1 , -1 ,
1442- nullptr , nullptr ) );
1434+ _edges.emplace_back (&_points[npoints], &_points[npoints+1 ], -1 , -1 ,
1435+ nullptr , nullptr );
1436+ _edges.emplace_back (&_points[npoints+2 ], &_points[npoints+3 ], -1 , -1 ,
1437+ nullptr , nullptr );
14431438
14441439 // Add all edges in the triangulation that point to the right. Do not
14451440 // explicitly include edges that point to the left as the neighboring
@@ -1458,11 +1453,12 @@ TrapezoidMapTriFinder::initialize()
14581453 const Point* neighbor_point_below = (neighbor.tri == -1 ) ?
14591454 nullptr : _points + triang.get_triangle_point (
14601455 neighbor.tri , (neighbor.edge +2 )%3 );
1461- _edges.push_back (Edge (start, end, neighbor.tri , tri,
1462- neighbor_point_below, other));
1456+ _edges.emplace_back (start, end, neighbor.tri , tri,
1457+ neighbor_point_below, other);
1458+ }
1459+ else if (neighbor.tri == -1 ) {
1460+ _edges.emplace_back (end, start, tri, -1 , other, nullptr );
14631461 }
1464- else if (neighbor.tri == -1 )
1465- _edges.push_back (Edge (end, start, tri, -1 , other, nullptr ));
14661462
14671463 // Set triangle associated with start point if not already set.
14681464 if (start->tri == -1 )
0 commit comments