|
Программирование >> Инициализация объектов класса, структура
#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 представляет стандартную библиотеку С++ и контейнерные типы - вектор и ассоциативный массив.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |