Справочное руководство по C++
Шрифт:
vec(int, int);
int& elem(int);
int& operator[](int);
};
main
{
vector a(10);
for (int i=0; i‹a.size; i++) {
a[i] = i;
cout ‹‹ a[i] ‹‹ " ";
}
cout ‹‹ "\n";
vec b(10,19);
for (i=0; i‹b.size; i++) b[i+10] = a[i];
for (i=0; i‹b.size; i++) cout ‹‹ b[i+10] ‹‹ " ";
cout ‹‹ "\n";
}
extern void exit(int);
// 1.13
void error(char* p)
{
cerr ‹‹ p ‹‹ "\n";
exit (1);
}
// 1.11
vector::vector(int s)
{
if (s‹=0) error("bad vector size");
sz = s;
v = new int[s];
}
int& vector::operator[](int i)
{
if (i‹0 || sz‹=i) error("vector index out of range");
return v[i];
}
vector::~vector
{
delete v;
}
// 1.13
int& vec::elem(int i)
{
return vector::elem(i-low);
}
vec::vec(int lb, int hb): (hb-lb+1)
{
if (hb-lb‹0) hb = lb;
low = lb;
high = hb;
}
void vector::set_size(int) {/* dummy */}
int& vec::operator[](int i)
{
if (i‹low || high‹i) error("vec index out of range");
return elem(i);
}
b1__14.cxx
#include‹stream.hxx›
extern void exit(int);
extern void error(char*);
// 1.11
class vector {
int *v;
int sz;
public:
vector(int); // constructor
~vector; // destructor
int size { return sz; }
void set_size(int);
int& operator[](int);
int& elem(int i) { return v[i]; }
};
vector::vector(int s)
{
if (s‹=0) error("bad vector size");
sz = s;
v = new int[s];
}
int& vector::operator[](int i)
{
if (i‹0 || sz‹=i) error("vector index out of range");
return v[i];
}
vector::~vector
{
delete v;
}
// 1.14
class Vec: public vector {
public:
Vec(int s): (s) {}
Vec(Vec&);
~Vec {}
void operator=(Vec&);
void operator*=(Vec&);
void operator*=(int);
};
Vec::Vec(Vec& a): (a.size)
{
int sz = a.size;
for (int i = 0; i‹sz; i++) elem(i) =a.elem(i);
}
void Vec::operator=(Vec& a)
{
int s = size;
if (s != a.size) error("bad vector size for =");
for (int i =0; i‹s; i++) elem(i)=a.elem(i);
}
Vec operator+(Vec& a, Vec& b)
{
int s = a.size;
if (s!= b.size) error("bad vector size for +");
Vec sum(s);
for (int i=0; i‹s; i++)
sum.elem(i) = a.elem(i) + b.elem(i);
return sum;
}
void error(char* p)
{
cerr ‹‹ p ‹‹ "\n";
exit (1);
}
void vector::set_size(int) {}
main
{
Vec a(10);
Vec b(10);
for (int i=0; i‹a.size; i++) a[i] = i;
b = a;
Vec c = a+b;
for (i=0; i‹c.size; i++) cout ‹‹ c[i] ‹‹ "\n";
}
Поделиться:
Популярные книги
Ваше Сиятельство
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XIV
14. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Подаренная чёрному дракону
Любовные романы:
любовно-фантастические романы
7.07
рейтинг книги
Я Гордый часть 2
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бальмануг. Невеста
5. Мир Десяти
Фантастика:
юмористическое фэнтези
5.00
рейтинг книги
Пограничная река. (Тетралогия)
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Сонный лекарь 6
6. Сонный лекарь
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Тринадцатый
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Ночь со зверем
3. Оборотни-медведи
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Страж. Тетралогия
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Кодекс Охотника. Книга XIV
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том VIII
8. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон устанавливает правила
6. Закон сильного
Старинная литература:
прочая старинная литература
5.00