Иллюстрированный самоучитель по Visual Studio.Net



              

Контейнер типа set - часть 4


Если это последовательность (sequence), то все происходит именно так, как только что было сказано, но если это сортируемый ассоциативный контейнер, то вы не можете управлять позицией вставки. Для таких контейнеров указание места вставки служит лишь отправной точкой для поиска реальной позиции в контейнере. В результате вставки при выводе вы увидите упорядоченную по возрастанию ключа последовательность. Порядок вставки в сортируемые ассоциативные контейнеры не влияет на порядок элементов, который вы увидите на экране. Однако он может повлиять на эффективность процесса вставки.

Пары

Парой называется шаблон класса, который хранит пару объектов различного типа. Пара похожа на контейнер в том, что она владеет своими элементами, но она не является контейнером, так как не поддерживает стандартных методов и итераторов, присущих контейнерам. У пары есть два элемента данных (first, second), которые дают возможность манипулировать вложенными объектами. Следующий фрагмент иллюстрирует логику использования пары:

pair<bool, double> result = FindRoot();

if (result.first)

print(result.second);

else

report_error() ;

Ассоциативные контейнеры используют тип пар _Pairib. Он определяет пару:

pair<iterator, bool>

Первый элемент каждой такой пары является итератором соответствующего типа, а второй — результатом какого-либо действия. Например, метод insert возвращает пару типа _Pairib, анализируя которую вы можете узнать результат вставки (успех или неудача). Рассмотрим пример:

void main ()

{

//========== Массив объектов класса Man

Man ar[] =

{

joy,duke, win, joy,charlie

);

uint size = sizeof(ar)/sizeof(Man);

//========== Создаем множество объектов класса Man

set<Man> s (ar, ar+size); pr(s, "Set of Man");

//========== Ищем объект и удаляем его

set<Man>::iterator p = s.find(joy);

if (p != s.end() )

{

s.erase(p);

cout « "\n\n"« joy «" found and erased";

}

pr(s,"After erasure");

//========== Объявляем пару



Содержание  Назад  Вперед