Spec-Zone.ru › D

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API