3.14. Класс pair
3.14. Класс pair
Класс pair (пара) стандартной библиотеки С++ позволяет нам определить одним объектом пару значений, если между ними есть какая-либо семантическая связь. Эти значения могут быть одинакового или разного типа. Для использования данного класса необходимо включить заголовочный файл:
#include utility
Например, инструкция
pair string, string author( "James", "Joyce" );
создает объект author типа pair, состоящий из двух строковых значений.
Отдельные части пары могут быть получены с помощью членов first и second:
string firstBook;
if ( Joyce.first == "James"
Joyce.second == "Joyce" )
firstBook = "Stephen Hero";
Если нужно определить несколько однотипных объектов этого класса, удобно использовать директиву typedef:
typedef pair string, string Authors;
Authors proust( "marcel", "proust" );
Authors joyce( "James", "Joyce" );
Authors musil( "robert", "musi1" );
Вот другой пример употребления пары. Первое значение содержит имя некоторого объекта, второе – указатель на соответствующий этому объекту элемент таблицы.
class EntrySlot;
extern EntrySlot* 1ook_up( string );
typedef pair string, EntrySlot* SymbolEntry;
SymbolEntry current_entry( "author", 1ook_up( "author"));
// ...
if ( EntrySlot *it = 1ook_up( "editor" ))
{
current_entry.first = "editor";
current_entry.second = it;
}
(Мы вернемся к рассмотрению класса pair в разговоре о контейнерных типах в главе 6 и об обобщенных алгоритмах в главе 12.)
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
5.1. Класс
5.1. Класс Класс (class) в языке UML служит для обозначения множества объектов, которые обладают одинаковой структурой, поведением и отношениями с объектами из других классов. Графически класс изображается в виде прямоугольника, который дополнительно может быть разделен
Пара (Pair)
Пара (Pair) Библиотека включает шаблоны для разнородных пар значений.template ‹class T1, class T2›struct pair { T1 first; T2 second; pair() {} pair(const T1& x, const T2& y): first(x), second(y) {}};template ‹class T1, class T2›inline bool operator==(const pair‹Tl,T2›& x, const pair‹Tl,T2›& y) { return x.first == y.first && x.second == y.second;}template ‹class T1, class T2›inline bool
Класс Pen
Класс Pen Класс Pen используется для создания пера, при помощи которого проводятся прямые и кривые линии. В отличие от полной версии .NET Framework, поддерживающей четыре перегруженных версии конструктора Pen, .NET Compact Framework позволяет создавать перо только с помощью двух
Самый базовый класс MFC (класс CObject)
Самый базовый класс MFC (класс CObject) Подавляющее большинство классов библиотеки MFC наследовано от базового класса CObject, лежащего в основе всей иерархии классов этой библиотеки. Методы и элементы данных класса CObject представляют наиболее общие свойства наследованных из него
Архивный класс (класс CArchive)
Архивный класс (класс CArchive) Класс CArchive используется для сохранения и восстановления состояния объектов в файлах на диске. Перед использованием объекта класса CArchive он должен быть привязан к файлу – объекту класса CFile.Более подробно о процессе сохранения и восстановления
Класс CObject – основной класс MFC
Класс CObject – основной класс MFC Подавляющее большинство классов из библиотеки MFC наследуются от основного класса CObject. Практически все классы, которые используются в ваших приложениях, например CView или CWinApp, унаследованы от класса CObject.Класс CObject обеспечивает наиболее общие
Класс CException
Класс CException Класс CException включает два виртуальных метода GetErrorMessage и ReportError. Эти методы позволяют получить словесное описание причины, которая привела к вызову исключения. Заметим, что методы GetErrorMessage и ReportError чисто виртуальные, поэтому они должны быть переопределены в
Класс CMemoryException
Класс CMemoryException Когда приложение заказывает у операционной системы новый блок оперативной памяти, может случиться, что вся память уже используется и больше памяти отдано приложению быть не может.Когда приложение пытается создать новую переменную или объект, вызывая
Класс CFileException
Класс CFileException Класс CFileException предназначен для обработки исключительных ситуаций, возникающих во время создания или вызова методов класса CFile и порожденных от него классов. Этот класс описан нами в разделе “Класс CFile” и предназначается для работы с файловой системой.
Класс CArchiveException
Класс CArchiveException Исключительные ситуации, возникающие во время записи и восстановления объектов из файла, вызывают исключение CArchiveException.Причина, по которой было вызвано исключение, определяется элементом данных m_cause из класса CFileException. В него заносится код, по которому
Класс CNotSupportedException
Класс CNotSupportedException Если приложение пытается вызвать несуществующий метод класса, то вызывается исключение CNotSupportedException. Конструктор класса CNotSupportedException имеет следующий вид:CNotSupportedException();Однако если вы сами желаете вызвать из своего кода исключение этого типа, то вместо
Класс CResourceException
Класс CResourceException Если в процессе работы возникают проблемы с ресурсами, например приложение пытается загрузить несуществующий ресурс, тогда вызывается исключение CResourceException. Вы можете вызвать это исключение сами. Для этого воспользуйтесь функцией AfxThrowResourceException:void
Класс CUserException
Класс CUserException Если какая-либо операция при работе приложения закончилась с ошибкой, оно может вызвать функцию AfxMessageBox, чтобы сообщить об этом пользователю, а затем вызвать исключение с объектом класса CUserException. Чтобы создать объект класса CUserException и вызвать исключение,
Класс ObjectBoardABC
Класс ObjectBoardABC Класс ObjectBoardABC является потомком класса BoardABC и представляет графический объект Доска с объектами.Конструкторы класса ObjectBoardABC constructor Create(x,y,nx,ny,szx,szy: integer; cl: GColor); Создает доску с объектами nx на ny клеток цвета cl с размером клетки (szx, szy) в позиции (x,
У11.2 Класс и его АТД
У11.2 Класс и его АТД Проверьте все предусловия и аксиомы АТД STACK, введенного в предыдущих лекциях, и покажите, отображаются ли они в классе STACK4, а если да, то