Top Page > Boost�̏Љ� > �T���v���W


Boost �T���v��


regex�F���K�\���������i���b�p��gimite::reg_manager�g�p�j

#include <string>
#include <iostream>
#include <gimite/reg_manager.h>
�@
void main(){
�@gimite::reg_manager rm;
�@std::string s= "<h1>Title</h1>Hello.";
�@if (rm.search(s, "<h1>(.*?)</h1>")) // ����
�@�@std::cout<<rm.str(1)<<std::endl; // �O���Q��
�@rm.replace(s, "<h1>(.*?)</h1>", "<p>\\1</p>", "g"); // �u��
�@std::cout<<s<<std::endl;
}

�o�́F
Title
<p>Title</p>Hello.

���b�p�Ȃ񂼎g����I�Ƃ��������������B


smart_ptr�F�X�}�[�g�|�C���^��v�f�Ƃ���R���e�i�����

#include <vector>
#include <iostream>
#include <boost/shared_ptr.hpp>
�@
struct Boo{
�@Boo(){ std::cout<<"Boo "; }
�@~Boo(){ std::cout<<"~Boo "; }
};
typedef boost::shared_ptr<Boo> BooPtr;
�@
void main(){
�@std::vector<BooPtr> v;
�@v.push_back(BooPtr(new Boo));
�@v.push_back(BooPtr(new Boo));
}

�o�́F
Boo Boo ~Boo ~Boo


smart_ptr�F�ǂ�������폜����Ȃ��Ȃ����玩����delete����

#include <iostream>
#include <boost/shared_ptr.hpp>
�@
struct Boo{
�@int i_;
�@Boo(int i): i_(i){ std::cout<<i_<<" Boo"<<std::endl; }
�@~Boo(){ std::cout<<i_<<" ~Boo"<<std::endl; }
�@void f(){ std::cout<<i_<<" f"<<std::endl; }
};
�@
void main(){
�@boost::shared_ptr<Boo> pb1, pb2;
�@pb1.reset(new Boo(1));
�@pb2= pb1;
�@pb2->f();
�@pb1.reset(new Boo(2));
�@pb2= pb1;
�@pb1->f();
}

�o�́F
1 Boo
1 f
2 Boo
1 ~Boo
2 f
2 ~Boo


format�Fostream��printf�`���ŏo�͂���

#include <iostream>
#include <boost/format.hpp>
�@
void main(){
�@std::cout<<boost::format("%s is %.2lf.")%"Pi"%3.14159265<<std::endl;
}

�o�́F
Pi is 3.14.

%���Z�q�Ńt�H�[�}�b�g�Ɉ�����^���܂��B


function�F�����o�֐���֐��I�u�W�F�N�g������ł���A�֐��|�C���^���ǂ������

#include <iostream>
#include <boost/function.hpp>
#include <boost/bind.hpp>
�@
struct Boo{
�@void f(int i, int j)
�@�@{ std::cout<<"Sum is "<<(i+j)<<"."<<std::endl; }
};
�@
struct Goo{
�@void g(int i, int j)
�@�@{ std::cout<<"Difference is "<<(i-j)<<"."<<std::endl; }
};
�@
void main(){
�@Boo boo; Goo goo;
�@boost::function2<void, int, int> func;
�@func= boost::bind(&Boo::f, &boo, _1, _2); // boo.f����
�@func(13, 7);
�@func= boost::bind(&Goo::g, &goo, _1, _2); // goo.g����
�@func(13, 7);
}

�o�́F
Sum is 20.
Difference is 6.

boost::bind�̈����� _1, _2, ... �̓����o�֐��̃p�����[�^�̐����������܂��B


tuple�F�����̖߂�l��Ԃ��A�����̕ϐ��Ŏ󂯎��

#include <iostream>
#include <string>
#include <boost/tuple/tuple.hpp>
�@
boost::tuple<int, double, std::string> foo(){
�@return boost::make_tuple(3, 1.41, "Hello");
}
�@
void main(){
�@int i;
�@double f;
�@std::string s;
�@boost::tie(i, f, s)= foo();
�@std::cout<<i<<' '<<f<<' '<<s<<std::endl;
}

�o�́F
3 1.41 Hello


operators�F���O�̃N���X�̉��Z�q��⊮����

#include <iostream>
#include <boost/operators.hpp>
�@
class int_modoki
�@: boost::totally_ordered<int_modoki, // <,==������>,<=,>=,!=���`
�@�@boost::additive<int_modoki> > // +=,-=������+,-���`
{
�@int i_;
public:
�@int_modoki(int i): i_(i){}
�@int_modoki& operator+=(const int_modoki& im)
�@�@{ i_+= im.i_; return *this; }
�@int_modoki& operator-=(const int_modoki& im)
�@�@{ i_-= im.i_; return *this; }
�@friend bool operator==(const int_modoki& im1, const int_modoki& im2)
�@�@{ return im1.i_==im2.i_; }
�@friend bool operator<(const int_modoki& im1, const int_modoki& im2)
�@�@{ return im1.i_<im2.i_; }
�@friend std::ostream& operator<<(std::ostream& os, const int_modoki& im)
�@�@{ os<<im.i_; return os; }
};
�@
void main(){
�@int_modoki i(3), j(6);
�@std::cout<<(i+j)<<' '<<(i-j)<<std::endl;
�@if (j>=i){ std::cout<<"j>=i"<<std::endl; }
}

�o�́F
9 -13
j>=i

���ɂ���Z���`����multipliable�Ƃ��A�F�X�B


bind�F3�����ȏ�̊֐��I�u�W�F�N�g�𑩔��ibind�j����

#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/bind.hpp>
�@
void f(int a, int b, int c){
�@std::cout<<"f("<<a<<','<<b<<','<<c<<')'<<std::endl;
}
�@
void main(){
�@std::vector<int> v;
�@v.push_back(10); v.push_back(3); v.push_back(5);
�@std::for_each(v.begin(), v.end(), boost::bind(f, 0, _1, 9));
�@�@// _1�̏��ɐV�����֐��I�u�W�F�N�g�̑�1����������
}

�o�́F
f(0,10,9)
f(0,3,9)
f(0,5,9)


math�F�ő���񐔁A�ŏ����{�������߂�

#include <iostream>
#include <boost/math/common_factor.hpp>
�@
void main(){
�@std::cout<<"GCD(4, 10) = "<<boost::math::gcd(4, 10)<<std::endl;
�@std::cout<<"LCM(4, 10) = "<<boost::math::lcm(4, 10)<<std::endl;
}

�o�́F
GCD(4, 10) = 2
LCM(4, 10) = 20


�]�k�F
�ɗ̓T���v����Z�����悤�Ƃ������ʁA�Ӗ��̖����T���v���������Ȃ��������B���̕ӂ̃o�����X�͂ǂ�����΁c�B
void main���g���Ă�̂��A1�s���炷���߂Ȃ�ł����i�΁j�B��߂��ق����������Ȃ��B��x core dumped. ���ďo�����c�B


Gimite �s���@<gimite@mx12.freecom.ne.jp>


�T���v���W < Boost�̏Љ� < Top Page