ПримерИнтервалпоказывает некоторые основные функциональные возможности<intervals>.
Используются различные экземпляры<intervals>для интегральных (<int, Time>) и непрерывных типов (<double,
std::string>).
В примерах используются границы открытых и закрытых интервалов.
Некоторые пограничные функции вызовов на открытых границах интервала проверяются, например:<interval<double>::rightopen(1/sqrt(2.0),sqrt(2.0)).contains(sqrt(2.0));>
#include<iostream>#include<string>#include<math.h>// Dynamically bounded intervals#include<boost/icl/discrete_interval.hpp>#include<boost/icl/continuous_interval.hpp>// Statically bounded intervals#include<boost/icl/right_open_interval.hpp>#include<boost/icl/left_open_interval.hpp>#include<boost/icl/closed_interval.hpp>#include<boost/icl/open_interval.hpp>#include"../toytime.hpp"#include<boost/icl/rational.hpp>usingnamespacestd;usingnamespaceboost;usingnamespaceboost::icl;intmain(){cout<<">>Interval Container Library: Sample interval.cpp <<\n";cout<<"----------------------------------------------------\n";// Class template discrete_interval can be used for discrete data types// like integers, date and time and other types that have a least steppable// unit.discrete_interval<int>int_interval=construct<discrete_interval<int>>(3,7,interval_bounds::closed());// Class template continuous_interval can be used for continuous data types// like double, boost::rational or strings.continuous_interval<double>sqrt_interval=construct<continuous_interval<double>>(1/sqrt(2.0),sqrt(2.0));//interval_bounds::right_open() is defaultcontinuous_interval<string>city_interval=construct<continuous_interval<string>>("Barcelona","Boston",interval_bounds::left_open());discrete_interval<Time>time_interval=construct<discrete_interval<Time>>(Time(monday,8,30),Time(monday,17,20),interval_bounds::open());cout<<"Dynamically bounded intervals:\n";cout<<" discrete_interval<int>: "<<int_interval<<endl;cout<<"continuous_interval<double>: "<<sqrt_interval<<" does "<<string(contains(sqrt_interval,sqrt(2.0))?"":"NOT")<<" contain sqrt(2)"<<endl;cout<<"continuous_interval<string>: "<<city_interval<<" does "<<string(contains(city_interval,"Barcelona")?"":"NOT")<<" contain 'Barcelona'"<<endl;cout<<"continuous_interval<string>: "<<city_interval<<" does "<<string(contains(city_interval,"Berlin")?"":"NOT")<<" contain 'Berlin'"<<endl;cout<<" discrete_interval<Time>: "<<time_interval<<"\n\n";// There are statically bounded interval types with fixed interval bordersright_open_interval<string>fix_interval1;// You will probably use one kind of static intervals// right_open_intervals are recommended.closed_interval<unsignedint>fix_interval2;// ... static closed, left_open and open intervalsleft_open_interval<float>fix_interval3;// are implemented for sake of completeness butopen_interval<short>fix_interval4;// are of minor practical importance.right_open_interval<rational<int>>range1(rational<int>(0,1),rational<int>(2,3));right_open_interval<rational<int>>range2(rational<int>(1,3),rational<int>(1,1));// This middle third of the unit interval [0,1)cout<<"Statically bounded interval:\n";cout<<"right_open_interval<rational<int>>: "<<(range1&range2)<<endl;return0;}// Program output://>>Interval Container Library: Sample interval.cpp <<//----------------------------------------------------//Dynamically bounded intervals// discrete_interval<int>: [3,7]//continuous_interval<double>: [0.707107,1.41421) does NOT contain sqrt(2)//continuous_interval<string>: (Barcelona,Boston] does NOT contain 'Barcelona'//continuous_interval<string>: (Barcelona,Boston] does contain 'Berlin'// discrete_interval<Time>: (mon:08:30,mon:17:20)////Statically bounded interval//right_open_interval<rational<int>>: [1/3,2/3)
Статья Interval раздела Chapter 1. Boost.Icl Examples может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.