D 如何声明一组红黑树?
当我想初始化一棵红黑树时,我会按照文档中的方法进行初始化D 如何声明一组红黑树?,d,D,当我想初始化一棵红黑树时,我会按照文档中的方法进行初始化 auto rbt = redBlackTree(1,2,3,4) 但是,如果我想在全球范围内声明它,或者创建一个红黑树数组,我不知道怎么做,文档也帮不上忙。我尝试过各种方法,经常会遇到类似的错误:redBlackTree!int用作类型您能帮我吗?如果我知道该放什么而不是auto,也就是说,如果我知道redBlackTree的类型,我就可以这样做 我想在全局范围内声明一棵红黑树,或者声明一个需要声明其类型的数组,我想执行如下操作: ty
auto rbt = redBlackTree(1,2,3,4)
但是,如果我想在全球范围内声明它,或者创建一个红黑树数组,我不知道怎么做,文档也帮不上忙。我尝试过各种方法,经常会遇到类似的错误:redBlackTree!int用作类型
您能帮我吗?如果我知道该放什么而不是auto
,也就是说,如果我知道redBlackTree
的类型,我就可以这样做
我想在全局范围内声明一棵红黑树,或者声明一个需要声明其类型的数组,我想执行如下操作:
type rbt;
void main() {
rbt.insert(3);
}
或者这个:
void main{
type[2] rbt;
rbt[0].insert(1);
}
您不需要知道
redBlackTree
的类型。您可以在编译时使用typeof
查询:
alias RBTree = typeof(redBlackTree(1));
RBTree rbt = redBlackTree(1, 2, 3);
这是一种常见且受鼓励的模式,因为D中的许多函数都返回(无法命名的类型)
在您的示例中,类型是RedBlackTree!int
。如果不使用IDE,发现类型的简单方法是pragma(msg,typeof(())代码>。
此外,我应该注意到,声明RedBlackTree数组与auto
一起工作:
auto arr = [redBlackTree(1, 2), redBlackTree(3, 4)];
要获得更多帮助,请随时发布失败的确切代码。类型(使用long而不是int)是RedBlackTree!long
,下面是一些示例。请记住,必须使用new
初始化类
import std.stdio;
import std.container;
RedBlackTree!long rbtree;
RedBlackTree!long[2] rbarray;
RedBlackTree!long[] rbdynamicarr;
RedBlackTree!long[][] rbmat;
void main() {
rbtree.writeln;
rbtree = new RedBlackTree!long;
rbtree.insert(3);
rbtree.writeln;
rbarray.writeln;
rbarray = new RedBlackTree!long[2];
rbarray.writeln;
rbdynamicarr.writeln;
int n = 3;
rbdynamicarr = new RedBlackTree!long[n];
rbdynamicarr.writeln;
rbmat.writeln;
int m = 2;
rbmat = new RedBlackTree!long[][](n,m);
rbmat.writeln;
alias RBTree = typeof(redBlackTree!long(1L));
RBTree rbalias;
rbalias = new RBTree;
rbalias.writeln;
RBTree[3] crayola;
crayola.writeln;
typeid(redBlackTree(1)).writeln;
RedBlackTree!(long, "a < b", false) hola;
hola = new RedBlackTree!(long, "a < b", false);
hola.writeln;
}
导入标准stdio;
进口标准集装箱;
红黑树!长尾树;
红黑树!长[2]rbaray;
红黑树!长[]RBR;
红黑树!长[][]rbmat;
void main(){
rbtree.writeln;
rbtree=新红黑树!长;
rbtree.插入(3);
rbtree.writeln;
rbarray.writeln;
rbarray=新红黑树!长[2];
rbarray.writeln;
rbdynamicarr.writeln;
int n=3;
rbdynamicarr=新红黑树!长[n];
rbdynamicarr.writeln;
rbmat.writeln;
int m=2;
rbmat=新红黑树!长[][](n,m);
rbmat.writeln;
别名RBTree=typeof(redBlackTree!long(1L));
RBTree-rbalias;
rbalias=新RBTree;
rbalias.writeln;
RBTree[3]crayola;
克雷约拉·莱特;
typeid(redBlackTree(1)).writeln;
红黑树!(长,“a
我想声明全局范围内的红黑树或红黑树数组,如下所示:键入[2]rbt\u数组
其中type是红黑树的类型带有两个元素的静态数组将被声明为RBTree[2]r=[redBlackTree(1,2),redBlackTree(3,4)]
或者你更舒服一点自动r=[redBlackTree(1,2),redBlackTree(3,4)]。staticArray
。这两种分配的类型都是RedBlackTree!(int,“a
。您可以在中看到这两个示例。