# Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world.

This is the documentation for an old version of Boost. Click here to view this page for the latest version.

#### num_segments

Calculates the number of segments of a geometry.

###### Description

The free function num_segments calculates the number of segments of a geometry.

###### Synopsis

```template<typename Geometry>
std::size_t num_segments(Geometry const & geometry)```

###### Parameters

Type

Concept

Name

Description

Geometry const &

Any type fulfilling a Geometry Concept

geometry

A model of the specified concept

###### Returns

The calculated number of segments

###### Header

Either

`#include <boost/geometry.hpp>`

Or

`#include <boost/geometry/algorithms/num_segments.hpp>`

###### Conformance

The function num_segments is not defined by OGC.

###### Behavior

Case

Behavior

pointlike (e.g. point)

Returns 0

Segment

Returns 1

Box

Returns d * 2^(d-1), where d is the dimension of the box

Rangelike (linestring, ring)

Returns boost::size(geometry) - 1

Other geometries

Returns the sum of the number of segments of its elements

###### Complexity

Constant or Linear

###### Examples

Get the number of segments in a geometry

```#include <iostream>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>

int main()
{
boost::geometry::model::multi_polygon
<
boost::geometry::model::polygon
<
boost::geometry::model::d2::point_xy<double>, true, false // cw, open polygon
>
> mp;
boost::geometry::read_wkt("MULTIPOLYGON(((0 0,0 10,10 0),(1 1,8 1,1 8)),((10 10,10 20,20 10)))", mp);
std::cout << "Number of segments: " << boost::geometry::num_segments(mp) << std::endl;
return 0;
}
```

Output:

```Number of segments: 9
```
 Copyright © 2009-2019 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its affiliates Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)