#include < iostream > #includeusing namespace std; int main() { vector v; int i; for(i=0; i<10; i++) v.push_back(i); for(i=0; i<10; i++) cout << v[i] << " "; cout << endl; vector ::iterator p = v.begin(); while(p != v.end()){ cout << *p << " "; p++; } return 0; }
コンストラクタ
#include < iostream >
using namespace std;
class myclass {
int a;
public:
myclass(int x){ a= x; }
int geta() { return a; }
};
int main()
{
myclass ob(4);
cout << ob.geta();
return 0;
}
new(nothrow)オプション
割り当てエラーを強制的に発生させています。
#include#include < new > using namespace std; int main() { double *p; do { p = new(nothrow) double[100000]; if(p) cout << "succeed memory set\n"; else cout << "memory set error\n"; } while(p); return 0; }
try/catchブロック
#include < iostream > #includeusing namespace std; int main() { int *p; try { p = new int; } catch (bad_alloc xa){ cout << "error memory set.\n"; return 1; } for(*p = 0; *p < 10; (*p)++) cout << *p << " "; delete p; return 0; }
catchの使用方法
#include < iostream >
using namespace std;
void Xhandler(int test)
{
try{
if(test==0) throw test;
if(test==1) throw 'a';
if(test==2) throw 123.23;
}
catch(...){
cout << "get!\n";
}
}
int main()
{
cout << "start\n";
Xhandler(0);
Xhandler(1);
Xhandler(2);
cout << "finish";
return 0;
}
catchの例外処理
#include < iostream >
using namespace std;
int main()
{
cout << "start\n";
try {
cout << "try block internal\n";
throw 10;
cout << "this is not action";
}
catch (int i){
cout << "get! number is : ";
cout << i << "\n";
}
cout << "finish";
return 0;
}
複数の汎用データ型の定義
#include < iostream > using namespace std; templateclass myclass { Type1 i; Type2 j; public: myclass(Type1 a, Type2 b) { i = a; j = b; } void show() { cout << i << ' ' << j << '\n'; } }; int main() { myclass ob1(10, 0.23); myclass ob2('X', "This is a test"); ob1.show(); ob2.show(); return 0; }
ランダムなイベントに対する仮想関数
#include < iostream >
#include < cstdlib >
using namespace std;
class base {
public:
int i;
base(int x){ i = x; }
virtual void func()
{
cout << "use base func(): ";
cout << i << '\n';
}
};
class derived1 : public base {
public:
derived1(int x) : base(x) {}
void func()
{
cout << "use derived 1 func(): ";
cout << i*i << '\n';
}
};
class derived2 : public base {
public:
derived2(int x) : base(x) {}
void func()
{
cout << "use derived2 func() : ";
cout << i+i << '\n';
}
};
int main()
{
base *p;
derived1 d_ob1(10);
derived2 d_ob2(10);
int i, j;
for(i=0; i<10; i++){
j = rand();
if((j%2)) p = &d_ob1;
else p = &d_ob2;
p->func();
}
return 0;
}
派生クラスへのポインタ
#include < iostream >
using namespace std;
class base {
int x;
public:
void setx(int i){ x = i; }
int getx() { return x; }
};
class derived : public base {
int y;
public:
void sety(int i){ y = i; }
int gety() { return y; }
};
int main()
{
base *p;
base b_ob;
derived d_ob;
p = &b_ob;
p->setx(10);
cout << "base class object x: " << p->getx() << '\n';
p = &d_ob;
p->setx(99);
d_ob.sety(88);
cout << "derived class object x: " << p->getx() << '\n';
cout << "derived class object y: " << d_ob.gety() << '\n';
return 0;
}
write()
#include < iostream >
#include < fstream >
#include < cstring >
using namespace std;
int main()
{
ofstream out("test", ios::out||ios::binary);
if(!out) {
cout << "can not open output file\n";
return 1;
}
double num = 100.45;
char str[] = "this is a test";
out.write((char *) &num, sizeof(double));
out.write(str, strlen(str));
out.close();
return 0;
}