Программирование >>  Расширенная версия языка c++ 

1 ... 143 144 145 [ 146 ] 147 148 149 ... 227


voi stint i) (

days to completion += i; ; :;

voi ys (int i) {

days to completion -= i;

bool completed 0 { return ompletion; }

voirtO {

Gout name : ; Г.тчГтг! (

cout days to completiQn;

cou дней до завершения\п ; . л;

}} . . . ...

boo r< (const ProjecP., const Project sb)

{ :

return <

i

boo r> (const Project in, const Project bb) -i-

return >

boo == (const Project ьа, const Project ЬЬ)

return ==

} ..

boo = (const Project sa, const Project &b)

return

int main0 ...:Г,-

list<Project> proj;

proj.pu3h back(Project( Разработка компилятора , 35));

proj .pu3h back (Project ( Разработка электронной таблиц! , 190));

proj,push back(Project( Разработка stl , 1000));

list<Project>::iterator p = proj,begin();

вывод проектов на экран

while (p !nd()) {

p->report(}; .

P++; .,

}



return 0;

После выполнения программы на экране появится следующее:

Разработка компилятора: 35 дней до завершения Разработка электронной таблицы: 190 дней до завершения Разработка STL: 1000 дней до завершения Разработка компилятора: 40 дней до завершения Разработка компилятора: 35 дней до завершения Разработка компилятора: 30 дней до завершения Разработка компилятора: 25 дней до завершения Разработка компилятора: 20 дней до завершения Разработка компилятора: 15 дней до завершения Разработка компилятора: 10 дней до завершения Разработка компилятора: 5 дней до завершения Разработка компилятора: 0 дней до завершения

1. Поэкспериментируйте с представленными примерами. Попытайтесь делать небольшие изменения в программах и исследуйте результаты.

2. В примере 1 после вхвода информации на экран список опустел. В примере 2 вы узнали об одном из способов исследования содержимого списка, при котором он остается неповрежденным. Можете ли вы придумать другой способ просмотреть список, не опустошая его при этом? Продемонстрируйте ваше решение, заменив необходимые инструкции в программе из примера 1.

3. Отталкиваясь от программы из примера 6, создайте еще один список, в котором представьте следующие проекты:

Проекг

Срок завершения

Разработка базы данных

Разработка стандартных писем

Разработка объектов СОМ

ие сроков выполнения первого проекта на 10 дней р = proj.begin О; p->add days(10) ;

последовательное завершение первого проекта do {

p->sub days (5}; p->report () ; } while(lp->completed()) ;



14.5. Ассоциативные списки

Класс тар поддерживает ассоциативный контейнер, в котором каждому значению соответствует уникальный ключ. По существу, ключ - это просто имя, которое вы присваиваете значению. После того как значение помещено в контейнер, извлечь его оттуда можно с помощью ключа. Таким образом, в самом общем смысле можно сказать, что ассоциативный список представляет собой список пар ключ/значение. Преимущество ассоциативнхх списков состоит в возможности получения значения по данному ключу. Например, используя ассоциативнхй список, можно хранить имена телефоннхх абонентов в качестве ключей, а номера телефонов в качестве значений. Ассоциативные контейнеры в программировании становятся все более и более популярнтми.

Как уже упоминалось, в ассоциативном списке можно хранить только уникальные ключи. Дублирования ключей не допускается. Для создания ассоциативного списка с неуникальными ключами используется класс-контейнер multimap.

Ниже представлена спецификация шаблона для класса тар:

templab-Klclass Key, clas, clas щр = 1езз<Кву>,

class Allocator =allocator<T class map

Здесь Key - это данные типа ключ, Т - тип данных, предназначенных для хранения (в карте), а Comp - функция для сравнения двух ключей, которой по умолчанию является стандартная Ключевое слово

Allocator задает распределитель памяти (которым по умолчанию является allocator).

В классе тар определены следующие конструкторы:

explicit map (const Comp &* ераая = СопО , .

const Allocator Sa = AllocatorO);

nap (cons :Кеу, T, Comp, Ailoc:ator>6o6 eKa-) ;

tenlata<Glaas Inlter>inap<Inlter длиало, Inlter конец, - : л

const Com сграан пр 0 , const Allocator fia = Allocator () ) ;

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

После создания второго списка выполните сортировку и затем слияние обоих списков. Выведите на экран итоговый результат.



1 ... 143 144 145 [ 146 ] 147 148 149 ... 227

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