Общие характеристики наборов
Объект коллекции (или просто, набор) является контейнером дискретных значений, обычно того же типа. Набор может содержать другие Базовые объекты Основы, пользовательские структуры данных и примитивные значения данных. Содержавшие Базовые объекты Основы могут иметь различные типы. Строго говоря «содержите», не точный срок (несмотря на то, что это концептуально полезно), потому что элемент данных в Базовом наборе Основы может быть не больше, чем размер указателя, варьирующегося процессором и компилятором. Но указатели предоставляют большую гибкость, и таким образом объекты коллекции разрешают ссылки на Базовые объекты Основы и указатели на любой блок данных, а также примитивных значений (таких как целые числа), которые не приводят больше пространства в рабочее состояние, чем адрес указателя.
Все объекты коллекции позволяют Вам получить доступ к содержавшему значению, удовлетворяющему определенное внешнее свойство. Это свойство, обычно называемое «ключом», варьируется согласно схеме организации, осуществленной типом набора. Например, ключ для массива является целым числом, указывающим позицию в наборе; с другой стороны, словарь — для которого термин «ключ» имеет больше стандартного значения — разрешает любому произвольному значению действовать как ключ для получения содержавшего значения. Базовый объект Основы, полученный от набора, как гарантируют, не сохранится, потому что набор владения мог бы освободить его, поэтому если Вы хотите содержать на него, необходимо сохранить или скопировать его. Посмотрите Типы Наборов для больше на ключах определенных типов набора.
Поведение определяется функциями обратного вызова
Большинство объектов коллекции имеет ряд, вызывают назад функции, определяющие фундаментальные операции, выполняемые на элементах того набора. Эти обратные вызовы вызываются к
сохраните элементы, добавленные к набору
элементы выпуска удалены из набора
сравните один элемент в наборе другому
распечатайте отладочную информацию о содержавших элементах
для наборов сумки и ключи словаря, вычисляют хэш-код
Обратные вызовы по умолчанию предоставлены для наборов, содержащих Базовые объекты Основы.
Заметьте в частности, что обратные вызовы влияют на семантику управления памятью объектов коллекции. При создании набора Вы указываете обратные вызовы, которые он должен использовать, когда элементы добавлены к или удалены из набора. Обратные вызовы по умолчанию являются подходящими для наборов, содержащих типы CF — они сохраняют объект, добавляющийся к набору, и выпустите объект, удаленный из набора. Если у Вас есть пользовательские данные, или если обратные вызовы по умолчанию недостаточны в Ваших целях, можно определить собственное. Посмотрите Создание и Копирование Наборов для больше на этом предмете.
Один тип функции, которая особенно интересна, является функцией applier. Большинство объектов коллекции позволяет Вам определять функцию обратного вызова. Вы тогда передаете указатель на эту функцию applier в имеющих функциях набора ApplyFunction
встроенный в их имена. Поведение, определенное в функции обратного вызова, применяется многократно к каждому элементу в наборе. Это поведение является по существу той же вещью как a for
цикл, перечисляющий набор; код в цикле применяется к каждому элементу в наборе.
Большая часть предложения наборов непостоянные и неизменные варианты
За исключением деревьев (которые не являются истинными контейнерами других объектов), наборы прибывают в две «разновидности» или варианты: неизменный и непостоянный. Значения в неизменных наборах установлены для жизни набора; Вы не можете добавленные стоимости им или удалять значения от них. Непостоянные наборы, однако, позволяют Вам добавленные стоимости, переупорядочивают значения и удаляют значения. Непостоянные наборы имеют две подразновидности, фиксированный размер и переменный размер, как определено полным параметром в функциях, создающих эти объекты. Для наборов фиксированного размера Вы определяете максимальный номер значений, которые может содержать набор.
Наборы переменного размера, с другой стороны, могут содержать неограниченное количество значений (или скорее ограниченные только ограничениями, внешними к набору, как сумма доступной памяти). Наборы фиксированного размера имеют тенденцию выше выполнять, но необходимо быть в состоянии поместить определенный предел на число значений, которые могут содержаться.
Некоторые функции набора воздействуют и на непостоянные и на неизменные наборы (например, получая число элементов данных и получая доступ к данным), тогда как другие работают только с непостоянными объектами коллекции, выполняя такие операции как добавление, вставка, удаление и сортировка элементов. Посмотрите Работу С Непостоянными Наборами для подробных данных об этих видах операций.