Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

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

Boost.Range strided range adaptor is adapted to Boost.Geometry

Description

Boost.Range strided range adaptor makes a strided range (usually begin a linestring or ring) such that traversal is performed in steps of n.

Model of

The Boost.Range strided range adaptor takes over the model of the original geometry, which might be:

Header

#include <boost/geometry/geometries/adapted/boost_range/strided.hpp>

The standard header boost/geometry.hpp does not include this header.

Example

Shows how to use a Boost.Geometry ring, strided by Boost.Range adaptor

#include <iostream>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/geometries/adapted/boost_range/strided.hpp>

#include <boost/assign.hpp> 1


int main()
{
    using namespace boost::assign;
    using boost::adaptors::strided;

    typedef boost::geometry::model::d2::point_xy<int> xy;
    boost::geometry::model::ring<xy> ring;
    ring += xy(0, 0);
    ring += xy(0, 1);
    ring += xy(0, 2);
    ring += xy(1, 2);
    ring += xy(2, 2);
    ring += xy(2, 0);

    boost::geometry::correct(ring);

    std::cout
        << "Normal : " << boost::geometry::dsv(ring) << std::endl
        << "Strided: " << boost::geometry::dsv(ring | strided(2)) << std::endl;

    return 0;
}

1

At the end to avoid conflicts with Boost.QVM

Output:

Normal : ((0, 0), (0, 1), (0, 2), (1, 2), (2, 2), (2, 0), (0, 0))
Strided: ((0, 0), (0, 2), (2, 2), (0, 0))

PrevUpHomeNext