std.container.util
Этот модуль содержит некоторые общие утилиты, используемые контейнерами.
Этот модуль является подмодулем std.container.
- Источник
- std/container/util.d
- Лицензия:
- Распространяется по лицензии Boost Software License, версия 1.0. (См. прилагаемый файл LICENSE_1_0.txt или копию по адресу boost.org/LICENSE_1_0.txt).
- Авторы:
- Андрей Александреску
- шаблон make(T) если (is(T == struct) || is(T == class))
-
Возвращает инициализированный объект. Эта функция в основном предназначена для устранения различий в построении структур и классов. Она позволяет коду не беспокоиться о том, является ли тип, который он строит, структурой или классом.
- Примеры:
-
import std.algorithm.comparison : equal; import std.container; auto arr = make!(Array!int)([4, 2, 3, 1]); assert(equal(arr[], [4, 2, 3, 1])); auto rbt = make!(RedBlackTree!(int, "a > b"))([4, 2, 3, 1]); assert(equal(rbt[], [4, 3, 2, 1])); alias makeList = make!(SList!int); auto slist = makeList(1, 2, 3); assert(equal(slist[], [1, 2, 3]));
- шаблон make(alias Container, Args...) если (!is(Container))
-
Функция-удобство для построения универсального контейнера.
- Примеры:
- запретить построение из бесконечного диапазона
import std.container.array : Array; import std.range : only, repeat; import std.range.primitives : isInfinite; static assert(__traits(compiles, { auto arr = make!Array(only(5)); })); static assert(!__traits(compiles, { auto arr = make!Array(repeat(5)); }));
- Примеры:
-
import std.algorithm.comparison : equal; import std.container.array, std.container.rbtree, std.container.slist; import std.range : iota; auto arr = make!Array(iota(5)); assert(equal(arr[], [0, 1, 2, 3, 4])); auto rbtmax = make!(RedBlackTree, "a > b")(iota(5)); assert(equal(rbtmax[], [4, 3, 2, 1, 0])); auto rbtmin = make!RedBlackTree(4, 1, 3, 2); assert(equal(rbtmin[], [1, 2, 3, 4])); alias makeList = make!SList; auto list = makeList(1, 7, 42); assert(equal(list[], [1, 7, 42]));
© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_container_util.html