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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

Во-первых, вы должны заранее знать размер массива. В общем случае это требование невыполнимо, хотя иногда вы знаете, что количество элементов не может превысить некоторое число. Однако те же вирусы успешно используют такие предположения программиста о количестве элементов массива, делая их ошибочными и заставляя программу выполнить запись за пределами массива. Не имеется также никакого иного способа увеличить массив, кроме как объявить новый массив и перенести в него содержимое старого массива меньшего размера.

Во-вторых, вставка элементов в произвольное место массива влечёт за собой копирование элементов внутри массива. Это достаточно дорогостоящая операция как с точки зрения используемой памяти, так и процессорного времени. Сортировка же элементов в пределах массива ещё более дорогостояща.

В настоящее время в состав С++ входит стандартная библиотека шаблонов ( Standard Template Library , STL), включающая множество различных типов контейнеров, каждый из которых обладает своими достоинствами ( и, само собой, недостатками ).

STL весьма объёмная библиотека с массой сложно реализованных контейнеров - фото 335

«STL — весьма объёмная библиотека с массой сложно реализованных контейнеров. Весь приведённый здесь материал следует рассматривать как беглое знакомство лишь с некоторыми возможностями STL.»

[ Советы ]

►Контейнер string...317

Наиболее распространённым типом массива, по-видимому, является нуль-завершённая строка, используемая для вывода текста. В ней наиболее ярко проявляются как достоинства, так и недостатки массивов. Взгляните, насколько просто выглядит следующее выражение:

cout << "Это обычная строка" ;

_________________

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

А вот как выглядит конкатенация двух строк:

char* concatString( char* s1 , char* s2 )

{

int length = strlen( s1 ) + strlen( s2 ) + 1 ;

char* s = new char[ length ] ;

strcpy( s , s1 ) ;

strcat( s , s2 ) ;

return s ;

}

Для работы со строками STL предоставляет контейнер string . Этот класс предоставляет программисту массу операций ( включая перегруженные операторы ), которые упрощают работу со строками символов. Та же конкатенация строк с использованием класса string выглядит гораздо проще:

string concat( string s1 , string s2 )

{

return s1 + s2 ;

}

До сих пор в программах я старался избегать использования классаstring - фото 336

«До сих пор в программах я старался избегать использования классаstring , поскольку вы ещё с ним не знакомы. Однако большинство программистов используют этот класс гораздо чаще, чем массивы символов с завершающим нулевым элементом.»

[ Помни! ]

Приведённая далее программа демонстрирует несколько возможностей класса string .

/* STLString — демонстрация простейших */

/* возможностей класса string из STL */

#include

#include

#include

using namespace std ;

/* concat — конкатенация двух строк */

string concat( string s1 , string s2 )

{

return s1 + s2 ;

}

/* removeSpaces — удаление всех пробелов из строки */

string removeSpaces( string s )

{

/* Находим смещение первого пробела; продолжаем поиск до тех пор, пока не сможем найти больше ни одного пробела */

size_t offset ;

while ( ( offset = s.find( " " ) ) != -1 )

{

/* Удаляем найденный пробел */

s.erase( offset , 1 ) ;

}

return s ;

}

/* insertPhrase — вставка фразы в том месте, где находится метка */

string insertPhrase( string source )

{

_________________

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

size_t offset = source.find( "" ) ;

if ( offset != -1 )

{

source.erase( offset , 4 ) ;

source.insert( offset , "Randall" ) ;

}

return source ;

}

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

{

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

/* Создаём строку, которая представляет собой конкатенацию двух меньших строк */

cout << "string1 + string2 = "

<< concat( "string1 " , "string2" )

<< endl ;

/* Создаём тестовую строку и удаляем в ней все пробелы */

string s2( "The phrase" ) ;

cout << "<" << s2 << "> минус пробелы = <"

<< removeSpaces( s2 ) << ">" << endl ;

/* Вставляем фразу в средину существующей строки */

string s3 = "Stephen Davis" ;

cout << s3 + " -> " + insertPhrase( s3 ) << endl ;

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

Интервал:

Закладка:

Сделать

Похожие книги на «С++ для чайников .»

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


Отзывы о книге «С++ для чайников .»

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

x