Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

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

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

}

} ;

/* Ассоциативный массив в действительности содержит пары, первый элемент которых является ключом, а второй — данными ( в нашем случае — классом Student ) */

class Student ;

typedef Student* SP ;

typedef pair< const int , Student* > Pair ;

typedef map< int , SP , SC > Map ;

typedef map< int , SP , SC >::iterator MapIterator ;

/* Коллекция студентов */

Map students ;

_________________

324 стр. Часть 5. Полезные особенности

/* Student — определяет важные свойства студентов, в первую очередь — ключ, используемый для выборки информации о студенте */

class Student

{

public :

Student( char* pszName , int id )

: studentIDKey( id ) , name( pszName ) { }

/* getKey — ключ, используемый в качестве индекса в ассоциативном массиве */

const int getKey( ) { return studentIDKey ; }

/* display — вывод информации на экран */

string display( )

{

ostringstream out ;

out << studentIDKey << " — " << name ;

return out.str( ) ;

}

protected :

/* Ключевое поле — идентификатор студента */

const int studentIDKey ;

/* Имя студента ( а также прочие данные ) */

string name ;

} ;

int main( int argc , char* pArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

/* Добавляем несколько студентов в коллекцию */

Student* pS ;

pS = new Student( "Алла" , 3456 ) ;

Pair* ptr = new Pair( pS -> getKey( ) , pS ) ;

students.insert( *ptr ) ;

/* Ассоциативный массив перегружает оператор индексирования для создания пары и вставки её в массив */

students[ 1234 ] = new Student( "Лариса" ,

1234 ) ;

students[ 5678 ] = new Student( "Марианна" ,

5678 ) ;

/* Проход по списку студентов. Ассоциативный массив всегда хранит элементы упорядоченными по ключу */

cout << "Отсортированный список студентов:" << endl ;

MapIterator iter = students.begin( ) ;

while ( iter != students.end( ) )

{

Pair p = *iter ;

Student* s = p.second ;

cout << s -> display( ) << endl ;

iter++ ;

}

_________________

325 стр. Глава 28. Стандартная библиотека шаблонов

/* Операторы инкремента и декремента могут использоваться для поиска предыдущего и последующего элемента */

cout << "\nИщем студента 3456" << endl ;

MapIterator p = students.find( 3456 ) ;

cout << "Найден: " << p -> second -> display( ) << endl ;

MapIterator p1 = p ;

MapIterator prior = --p1 ;

cout << "Предшественник = "

<< prior -> second -> display( ) << endl ;

MapIterator p2 = p ;

MapIterator successor = ++p2 ;

cout << "Следующий = "

<< successor -> second -> display( ) << endl ;

/* Функция find( ) возвращает итератор end( ), если искомый элемент не найден; operator[ ] возвращает NULL */

if ( students.find( 0123 ) == students.end( ) )

{

cout << "Вызов students.find( 0123 ) возвратил\n"

<< "students.end( ), т.к. студента 0123 нет"

<< endl ;

}

/* Вывод с использованием индекса */

cout << "Проверка индекса: students[ 3456 ] = "

<< students[ 3456 ] -> display( ) << endl ;

if ( students[ 0123 ] == NULL )

{

cout << "students[ 0123 ] возвращает NULL"

<< endl ;

}

/* Пауза для того, чтобы посмотреть на результат работы программы */

system( "PAUSE" ) ; return 0 ;

}

Ключевым моментом программы являются три оператора typedef . Контейнер map содержит множество объектов Pair , каждый из которых содержит по два элемента. Первый элемент — ключ ( в нашем случае — идентификатор студента ), а второй — сам объект Student . В аргументы шаблона Map добавлен класс SC , который содержит единственный метод, сравнивающий два ключа ( это немного сложнее, чем глобальная функция, использованная в контейнере list , но эффект абсолютно тот же ).

Программа начинает работу с создания трёх объектов Pair и вносит их в список. Затем проход по контейнеру показывает, что он хранит элементы упорядоченными по ключу, так что вызов метода sort( ) нам не нужен.

Во второй части программы выполняется поиск с использованием метода find( ) , а также выборка предыдущего и последующего элементов контейнера при помощи операторов инкремента и декремента.

_________________

326 стр. Часть 5. Полезные особенности

Вывод программы выглядит следующим образом:

Отсортированный список студентов 1234 Лариса 3456 Алла 5678 - фото 343

Отсортированный список студентов:

1234 — Лариса

3456 — Алла

5678 — Марианна

Ищем студента 3456

Найден: 3456 — Алла

Предшественник = 1234 — Лариса

Следующий = 5678 — Марианна

Вызов students.find( 0123 ) возвратил

students.end( ), т.к. студента 0123 нет

Проверка индекса: students[ 3456 ] = 3456 — Алла

students[ 0123 ] возвращает NULL

Press any key to continue...

_________________

327 стр. Глава 28. Стандартная библиотека шаблонов

Часть 6. ВЕЛИКОЛЕПНАЯ ДЕСЯТКА...329

ОГЛАВЛЕНИЕ

СОДЕРЖАНИЕ

Глава 29. ДЕСЯТЬ СПОСОБОВ ИЗБЕЖАТЬ ОШИБОК...331

Глава 30. ДЕСЯТЬ ОСНОВНЫХ ВОЗМОЖНОСТЕЙ DEV-C++...336

Глава 31. ПРОГРАММА BUDGET...343

В этой части Ни одна книга для чайников не может обойтись без - фото 344

В этой части Ни одна книга для чайников не может обойтись без - фото 345

В этой части...

Ни одна книга ...для "чайников" не может обойтись без "Великолепных десяток". В главе 29, "Десять способов избежать ошибок", описано десять способов, благодаря которым вы сможете оградить свою программу от ошибок. Многое из того, что здесь сказано, подходит и для языка С. В главе 30 , "Десять основных возможностей Dev-C++", вы познакомитесь с десятком наиболее важных опций компилятора Dev-C++.

Глава 29. ДЕСЯТЬ СПОСОБОВ ИЗБЕЖАТЬ ОШИБОК...331

ОГЛАВЛЕНИЕ

В этой главе...

►Включение всех предупреждений и сообщений об ошибках 331

►Добейтесь чистой компиляции 332

►Используйте последовательный стиль программирования 332

►Ограничивайте видимость 332

►Комментируйте свою программу 334

►Хотя бы один раз выполните программу пошагово 334

►Избегайте перегрузки операторов334

►Работа с кучей 334

►Используйте для обработки ошибок исключительные ситуации 355

►Избегайте множественного наследования 355

►Включение всех предупреждений и сообщений об ошибках...331

Синтаксис С++ позволяет проверять всё и вся. Когда компилятор встречается с конструкцией, которую он не может понять, у него не остаётся никакого выбора, кроме генерации сообщения об ошибке. И хотя компилятор честно пытается перейти к следующей строке, он даже не сочтёт нужным создать выполняемую программу.

Выключение сообщений об ошибках и предупреждений подобно отключению красных габаритных огней на вашей машине, потому что они вас раздражают. Игнорирование проблемы не заставит её исчезнуть. Если ваш компилятор имеет режим абсолютной проверки кода, включите его. И Visual С++ .NET, и Dev-C++ предоставляют режим "Включить все сообщения" ( Enable All Messages), который должен постоянно находиться в рабочем состоянии. В конце концов эта многословность сбережёт ваше время.

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

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x