Giriş
Şu satırı dahil ederiz.
Kolay kullanmak için şu satırı dahil ederiz.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/numeric/interval.hpp>
KullanımKolay kullanmak için şu satırı dahil ederiz.
using namespace boost::numeric;
using namespace boost::numeric::interval_lib;
interval ile kullandığım metodlar boost::numeric::overlap (), boost::numeric::intersect ()
Tanımlama
Örnek
Şöyle yaparız.
Şöyle yaparız.
Constructor - int + int
Şöyle yaparız.
Şöyle yaparız.Tanımlama
Örnek
Şöyle yaparız.
#include <boost/numeric/interval.hpp>
#include <boost/numeric/interval/rounded_arith.hpp>
using namespace std;
using namespace boost::numeric::interval_lib;
using namespace boost::numeric;
typedef interval<double,
policies<save_state<rounded_transc_std<double> >,
checking_base<double> >
> Interval;
ÖrnekŞöyle yaparız.
using Interval = boost::numeric::interval<
double, bi::policies<
bi::save_state<bi::rounded_transc_std<double> >, bi::checking_base<double>
> >;
Şöyle yaparız.
Interval i (-1, 1);
Constructor - double + doubletypedef interval<double, policies<save_state<rounded_transc_std<double> >,
checking_base<double> > > Interval;
Interval i(1.0, 2.0);
Constructor - IntervalŞöyle yaparız.
Interval i = ...;
Interval i1 = cos (i);
operator * metodu
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
sin metodu
Şöyle yaparız
Şöyle yaparız.
interval'ların çakıştığını kontrol etmek için şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Interval i{1.9, 2.1};
std::cout << (2.0 * i) << "\n";
std::cout << (i * 2.0) << "\n";
Çıktı olarak şunu alırız.[3.8,4.2]
[3.8,4.2]
operator - metoduŞöyle yaparız.
Interval result = (Interval(3.15, 4.6) - Interval(-0.6, 2.1));
cout << "result: " << result.lower() << " " << result.upper();
upper metoduŞöyle yaparız.
template <typename T>
using Interval = interval<T, policies<save_state<rounded_transc_exact<T>>,
checking_base<T>>>;
std::cout << sin(Interval<double>(0.0, 0.1)).upper() << "\n"; // 0.0998334
Diğersin metodu
Şöyle yaparız
#include <boost/numeric/interval.hpp>
namespace bn = boost::numeric;
namespace bi = bn::interval_lib;
using Interval = bn::interval<
double,
bi::policies<
bi::save_state<bi::rounded_transc_std<double> >,
bi::checking_base<double>
>
>;
Şöyle yaparız.Interval iv_arg {1.0};
Interval res = sin(iv_arg);
Örnek
Basit bir interval sınıfı şöyledir.
class interval {
int upper, lower;
interval(int upper,int lower){
this.upper=upper;
this.lower=lower;
}
}
SıralamaŞöyle yaparız.
bool compare(interval obj1, interval obj2) {
return obj1.begin < obj2.begin;
}
Şöyle yaparız.std::sort(schedule.begin(), schedule.end(), compare);
Overlapinterval'ların çakıştığını kontrol etmek için şöyle yaparız.
You can keep the existingTasks sorted by beginTime, and use Collections.binarySearch to obtain the index where to insert the new task, and compare with previous and next task. That, of course would be O(log(N))Kendi overlap metodum
Şöyle yaparız.
bool intersect(interval a, interval b) {
return (a.begin >= b.end || a.end <= b.begin);
}
Kendi intersect metodumŞöyle yaparız.
#include <algorithm>
template <typename ...Ts>
auto intersection(const Ts&... ps)
{
return std::make_pair(std::max({ps.first...}), std::min({ps.second...}));
}