Бьярн Страустрап - Справочное руководство по C++

Здесь есть возможность читать онлайн «Бьярн Страустрап - Справочное руководство по C++» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Справочное руководство по C++: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Справочное руководство по C++»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Справочное руководство по C++ — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Справочное руководство по C++», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

for (int k=0; k‹sz; k++) {

char temp = pj[k];

pj[k] = pj1[k];

pj1[k] = temp;

}

}

}

void print_id(Puser v, int n)

{

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);

(z1.*pf1)(2);

z2.print(3);

((&z2)-›*pf2)(4);

}

b5_5_3.cxx

main() {

char *p = new char[100];

char *q = new char[100];

delete p;

delete p;

}

b6_3_2.cxx

#include "stream.hxx"

int error (char * p)

{

cout ‹‹ p ‹‹ "\n";

return 1;

}

class tiny {

char v;

tiny assign(int i)

{v = (i&~63) ? (error("range error"),0) : i; return *this; }

public:

tiny (int i) { assign(i); }

tiny (tiny& t) { v = t.v; }

tiny operator=(tiny& t1) { v = t1.v; return *this; }

tiny operator=(int i) { return assign(i); }

int operator int() { return v; }

};

void main()

{

tiny c1 = 2;

tiny c2 = 62;

tiny c3 = (c2 - c1);

tiny c4 = c3;

int i = (c1 + c2);

c1 = (c2 + (2 * c1));

c2 = c1 - i;

c3 = c2;

}

b6_6.cxx

#include ‹stream.hxx›

extern int strcpy(char*, char*);

extern int strlen(char *);

struct string {

char *p;

int size;

inline string(int sz) { p = new char[size=sz]; }

string(char *);

inline ~string() { delete p; }

void operator=(string&);

string(string&);

};

string::string(char* s)

{

p = new char [size = strlen(s) + 1];

strcpy (p,s);

}

void string::operator=(string& a)

{

if (this == &a) return;

delete p;

p=new char[size=a.size];

strcpy(p,a.p);

}

string::string(string& a)

{

p=new char[size=a.size];

strcpy(p,a.p);

}

string g(string arg)

{

return arg;

}

main()

{

string s = "asdf";

s = g(s);

cout ‹‹ s.p ‹‹ "\n";

}

b6_7.cxx

#include ‹stream.hxx›

#include ‹string.h›

struct pair {

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Справочное руководство по C++»

Представляем Вашему вниманию похожие книги на «Справочное руководство по C++» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Справочное руководство по C++»

Обсуждение, отзывы о книге «Справочное руководство по C++» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x