Справочное руководство по C++
Шрифт:
for (int i=0; i‹n; i++)
cout ‹‹ v[i].name ‹‹ "\t"
‹‹ v[i].id ‹‹ "\t"
‹‹ v[i].dept ‹‹ "\n";
}
extern int strcmp(char*, char*);
int cmp1(char* p, char* q)
{
return strcmp(Puser(p)-›name, Puser(q)-›name);
}
int cmp2(char* p, char* q)
{
return Puser(p)-›dept - Puser(q)-›dept;
}
main
{
sort((char*)heads,6,sizeof(user),cmp1);
print_id(heads,6);
cout ‹‹ "\n";
sort ((char*)heads,6,sizeof(user),cmp2);
print_id(heads,6); // in department number order
}
b5_3_2.cxx
#include ‹stream.hxx›
class intset {
int cursize, maxsize;
int *x;
public:
intset(int m, int n);
~intset;
int member(int t);
void insert(int t);
void iterate(int& i) { i = 0; }
int ok(int& i) { return i‹cursize; }
int next(int& i) { return x[i++]; }
};
extern void exit (int);
void error(char *s)
{
cout ‹‹ "set: " ‹‹ s ‹‹ "\n";
exit(1);
}
extern int atoi(char *);
extern int rand;
int randint (int u) // in the range 1…u
{
int r = rand;
if (r ‹ 0) r = -r;
return 1 + r%u;
}
intset::intset(int m, int n)
{
if (m‹1 || n‹m) error("illegal intset size");
cursize = 0;
maxsize = m;
x = new int[maxsize];
}
intset::~intset
{
delete x;
}
void intset::insert(int t)
{
if (++cursize › maxsize) error("too many elements");
int i = cursize-1;
x[i] = t;
while (i›0 && x[i-1]›x[i]) {
int t = x[i];
x[i] = x[i-1];
x[i-1] = t;
i--;
}
}
int intset::member(int t)
{
int l = 0;
int u = cursize-1;
int m =0;
while (l ‹= u) {
m = (l+u)/2;
if (t ‹ x[m])
u = m-1;
else if (t › x[m])
l = m+1;
else
return 1; // found
}
return 0; // not found
}
void print_in_order(intset* set)
{
int var;
set-›iterate(var);
while (set-›ok(var)) cout ‹‹ set-›next(var) ‹‹ "\n";
}
main (int argc, char *argv[])
{
if (argc!= 3) error("two arguments expected");
int count = 0;
int m = atoi(argv[1]);
int n = atoi (argv[2]);
intset s(m,n);
int t = 0;
while (count ‹m) {
t = randint(n);
if (s.member(t)==0) {
s.insert(t);
count++;
}
}
print_in_order(&s);
}
b5_4_5.cxx
#include ‹stream.hxx›
struct cl
{
char* val;
void print(int x) { cout ‹‹ val ‹‹ x ‹‹ "\n"; }
cl(char *v) { val = v; }
};
typedef void (cl::*PROC)(int);
main
{
cl z1("z1 ");
cl z2("z2 ");
PROC pf1 = &cl::print;
PROC pf2 = &cl::print;
z1.print(1);
Поделиться:
Популярные книги
Неудержимый. Книга XII
12. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер 5
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Идущий в тени 5
5. Идущий в тени
Фантастика:
фэнтези
рпг
5.50
рейтинг книги
Три `Д` для миллиардера. Свадебный салон
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Проклятый Лекарь. Род II
2. Каратель
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Вальдиры миры. Кроу-3
3. Кроу
Фантастика:
фэнтези
рпг
8.38
рейтинг книги
Новый Рал 8
8. Рал!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 7
7. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Системный Нуб
1. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Объединитель
8. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Жребий некроманта. Надежда рода
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50
рейтинг книги
Мимик нового Мира 7
6. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Академия
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Приручитель женщин-монстров. Том 2
2. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00