Программирование >>  Инициализация объектов класса, структура 

1 ... 21 22 23 [ 24 ] 25 26 27 ... 395


#include <vector> #include <algorithm> #include <iostream>

int ia[ 10 ] = {

51, 23, 7, 88, 41, 98, 12, 103, 37, 6

int main() {

vector< int > vec( ia, ia+10 );

vector<int>::iterator it = vec.b

begin(), end it = vec.end();

cout << Начальн массив: ;

for ( ; it != end it; ++ it ) cout << *it << ; cout << \n ;

сортировка массива

sort( vec.begin(), vec.end() );

cout << упорядоченн массив: ; it = vec.begin(); end it = vec.end(); for ( ; it != end it; ++ it ) cout << *it << ; cout << \n\n ;

int search value;

cout << Введите значение для поиска: ; cin >> search value;

поиск элемента vector<int>::iterator found;

found = find( vec.begin(), vec.end(), search value );

if ( found != vec.end() )

cout << значение найдено!\n\n ; else cout << значение найдено!\n\n ;

инвертирование массива

verse( vec.begin(), vec.end() );

revers

cout << инвертированно массив: ; it = vec.begin(); end it = vec.end();

for ( ; it != end it; ++ it ) cout << *it << ; cout << endl;

Стандартная библиотека С++ поддерживает и ассоциативные массивы. Ассоциативный массив - это массив, элементы которого можно индексировать не только целыми числами, но и значениями любого типа. В терминологии стандартной библиотеки ассоциативн1й массив называется отображением (miap). Например, телефонный справочник может быть представлен в виде ассоциативного массива, где индексами

#include <map>

служат фамилии абонентов, а значениями элементов - телефонные номера:

#include <string>

#include TelephoneNumber.h



map<string, telephoneNum> telephone directory;

(Классы векторов, отображений и других контейнеров в подробностях описываются в главе 6. М1 попробуем реализовать систему текстового поиска, используя эти классы. В главе 12 рассмотрены обобщенные алгоритм:, а в Приложении приводятся примеры их использования.)

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

Упражнение 2.22

string pals[] pooh , ti

tiger , piglet , eeyore , kanga };

(a) vector<string> svec1(pals,pals+5);

(b) vector<int> ivec1(10);

(c) vector<int> ivec2(10,10);

(d) vector<string> svec2(svec1);

(e) vector<double> dvec;

Поясните результаты каждого из следующих определений вектора: Упражнение 2.23

Напишите две реализации функции min() , объявление которой приведено ниже. Функция должна возвращать минимальный элемент массива. Используйте цикл for и перебор элементов с помощью

индекса

i template <class elemType> итератора

elemType min (const vector<elemType> &vec);



Часть II

Основы языка

Код программе! и данные, которыми программа манипулирует, записываются в намять компьютера в виде последовательности битов. Бит - это мельчайший элемент компьютерной памяти, способная хранить либо 0, либо 1. На физическом уровне это соответствует электрическому напряжению, которое, как известно, либо есть , либо нет. Посмотрев на содержимое памяти компьютера, мы увидим что-нибудь вроде:

00011011011100010110010000111011 ...

Очень трудно придать такой последовательности смысл, но иногда нам приходится манипулировать и подобными неструктурированными данными (обычно нужда в этом возникает при программировании драйверов аппаратных устройств). С++ предоставляет набор операций для работы с битовыми данн1ми. (Mы поговорим об этом в главе 4.)

Как правило, на последовательность битов накладывают какую-либо структуру, группируя бит1 в байты и слова. Байт содержит 8 бит, а слово - 4 байта, или 32 бита. Однако определение слова может быть разным в разных операционных системах. Сейчас начинается переход к 64-битным системам, а еще недавно были распространены система: с 16-битными словами. Хотя в подавляющем большинстве систем размер байта одинаков, мы все равно будем называть эти величины машинно-зависимыми.

Так выглядит наша последовательность битов, организованная в байты.

Рис 1.

Адресуемая машинная память

Теперь мы можем говорить, например, о байте с адресом 1040 или о слове с адресом 1024 и утверждать, что байт с адресом 1032 не равен байту с адресом 1040.

Однако мы не знаем, что же представляет собой какой-либо байт, какое-либо машинное слово. Как понять см1сл тех или иных 8 бит? Для того чтобы однозначно интерпретировать значение этого байта (или слова, или другого набора битов), мы должны знать тип данных, представляемых данным байтом.

С++ предоставляет набор встроенных типов данных: символьный, целый, вещественный - и набор составных и расширенных типов: строки, массивы, комплексные числа. Кроме того, для действий с этими данными имеется базовый набор операций: сравнение, арифметические и другие операции. Есть также операторы переходов, циклов, условные операторы. Эти элементы языка С++ составляют тот набор кирпичиков, из которых можно построить систему любой сложности. Первым шагом в освоении С++ станет изучение перечисленных базовых элементов, чему и посвящена часть II данной книги.

Глава 3 содержит обзор встроенных и расширенных типов, а также механизмов, с помощью которых можно создавать новые типы. В основном это, конечно, механизм классов, представленный в разделе 2.3. В главе 4 рассматриваются выражения, встроенные операции и их приоритеты, преобразования типов. В главе 5 рассказывается об инструкциях языка. И наконец глава 6 представляет стандартную библиотеку С++ и контейнерные типы - вектор и ассоциативный массив.



1 ... 21 22 23 [ 24 ] 25 26 27 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика