区間の上端、下端を表すために使うデータの型を指定する。 double を使うことが多いだろう。その場合は、 例えば次のようにすると、変数 x が定義できる。
kv::interval<double> x;
typedef kv::interval<double> itv; itv x;
初期化をするには? 点区間 の場合は
itv x(1.); itv x=(itv)1.;
これはダメ |
itv x=1.; |
定義した後、実行文で代入するのはOK |
itv x; x=1.; |
点区間でない、フツーの区間でも同様。 の場合は
itv x(1.,2.); itv x=itv(1.,2.); |
また、 文字列での初期化、代入も可能である。非整数データのときに役に立つ。
itv x("0.1", "0.2"); itv x; x=itv("0.1", "0.2");
文字列での初期化を「標準」と考えるのが良いかもね。
円周率のような定数はどうしようかな? いつものやり方の自然な拡張をするのならば、以下のようになる。
testkv1.c |
/* * testkv1.c * g++ -I/opt/local/include -I/usr/local/include testkv1.cc */ #include <iostream> #include <math.h> #include <kv/interval.hpp> #include <kv/rdouble.hpp> typedef kv::interval<double> itv; int main(void) { itv pi; pi = 4*atan(itv(1.0)); std::cout.precision(17); std::cout << pi << std::endl; return 0; } |
$ g++ -I/opt/local/include -I/usr/local/include testkv1.cc $ ./a.out [3.1415926535897931,3.1415926535897936] $ |
桂田 祐史