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 an older version of Boost and was released in 2017. The current version is 1.89.0.
Boost.Range strided range adaptor is adapted to Boost.Geometry
Boost.Range strided range adaptor makes a strided range (usually begin a linestring or ring) such that traversal is performed in steps of n.
The Boost.Range strided range adaptor takes over the model of the original geometry, which might be:
#include <boost/geometry/geometries/adapted/boost_range/strided.hpp>
The standard header boost/geometry.hpp
does not include this header.
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>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; }
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))