Набор представляет собой неупорядоченный контейнер, который может содержать разнородные ключи. Набор требует (и гарантирует) отсутствие дубликатов при вставке новых ключей.
Note
The actual representation of a hana::set is implementation-defined. In particular, one should not take for granted the order of the template parameters and the presence of any additional constructors or assignment operators than what is documented. The canonical way of creating a hana::set is through hana::make_set.
Modeled concepts
Comparable Два набора равны, они содержат одни и те же элементы, независимо от порядка.
// Авторское право Louis Dionne 2013-2016
// Распространяется под лицензией Boost Software License, версия 1.0.
// (См. сопроводительный файл LICENSE.md или копию на http://boost.org/LICENSE_1_0.txt)
Складной Складка множества эквивалентна складыванию последовательности его значений. Однако обратите внимание, что значения не обязательно должны быть в каком-либо определенном порядке, поэтому использование представленных здесь складок с операцией, которая не является одновременно коммутативной и ассоциативной, приведет к недетерминистическому поведению.
// Авторское право Louis Dionne 2013-2016
// Распространяется по лицензии Boost Software License, Version 1.0.
// [См. сопроводительный файл LICENSE.md или копия по http://boost.org/LICENSE_1_0.txt]
][ORIG_END] -->
Поисковик Элементы в наборе действуют как ключи, так и ценности. Поскольку элементы множества уникальны, поиск элемента возвращает либо единственный элемент, равный поисковому значению, либоnothing. Также обратите внимание, чтоoperator[]можно использовать вместо функцииat_key.
// Авторское право Louis Dionne 2013-2016
// Распространяется по лицензии Boost Software License, версия 1.0.
// [См. сопроводительный файл LICENSE.md или копию по адресу http://boost.org/LICENSE_1_0.txt]
Любая структура<Foldable>может быть преобразована в<hana::set>с<to<set_tag>>. Все элементы структуры должны быть составлены по времени<Comparable>. Если структура содержит дублирующие элементы, то в получившемся наборе появится только первая встречаемость. Конверсия из<Foldable>эквивалентна
Возвращает теоретико-множественное различие двух множеств.
В двух случаях<xs>и<ys>,<difference(xs, ys)>это новый набор, содержащий все элементы<xs>, которыенесодержатся в<ys>. Для любого объекта<x>имеет значение следующее:
x ^in^ difference(xs, ys) if and only if x ^in^ xs && !(x ^in^ ys)
Note
This operation is not commutative, i.e. difference(xs, ys) is not necessarily the same as difference(ys, xs). Indeed, consider the case where xs is empty and ys isn't. Then, difference(xs, ys) is empty but difference(ys, xs) is equal to ys. For the symmetric version of this operation, see symmetric_difference.
Parameters
xs
Набор для удаления ценностей.
ys
Набор, значения которого удалены от<xs>.
Example
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
При наличии двух наборов<xs>и<ys><intersection(xs, ys)>новый набор содержит именно те элементы, которые присутствуют как в<xs>, так и в<ys>. Другими словами, для любого объекта<x>:
При нулевых или более значениях<xs...><make<set_tag>>возвращается<set>, содержащий эти значения. Все значения должны соответствовать времени компиляции<Comparable>, и никакие дублирующие значения не могут быть предоставлены. Чтобы создать<set>из последовательности с возможными дубликатами, используйте<to<set_tag>>вместо этого.
Example
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
Возвращает новый набор, содержащий все элементы оригинала, кроме того, который сравнивает<equal>с данным элементом. Если набор не содержит такого элемента, возвращается новый набор, равный исходному набору.
Parameters
set
Набор, в котором можно удалить значение.
element
Ценность для удаления. Это должно быть время компиляции<Comparable>.
Example
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
Возвращает симметричное теоретико-множественное различие двух множеств.
При наличии двух наборов<xs>и<ys>,<symmetric_difference(xs, ys)>представляет собой новый набор, содержащий все элементы<xs>, которые не содержатся в<ys>, и все элементы<ys>, которые не содержатся в<xs>. Симметричное различие двух множеств удовлетворяет следующему:
При наличии двух наборов<xs>и<ys><union_(xs, ys)>новый набор, содержащий все элементы<xs>и все элементы<ys>, без дубликатов. Для любого объекта<x>, следующее:
x ^in^ union_(xs, ys) if and only if x ^in^ xs || x ^in^ ys
Parameters
xs,ys
Два набора для вычисления союза.
Example
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
Статья Boost.Hana: boost::hana::set< implementation_defined > Struct Template Reference раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.