5

我在用字符实例化 RedBlackTree 容器时遇到问题,但它适用于整数:

import std.stdio;
import std.container;

void main()
{
        auto r1 = redBlackTree!(int)();   // works
        auto r2 = redBlackTree!(char)();  // error instantiating
}

我正在使用 DMD32 D 编译器 v2.060。

有什么想法吗?谢谢。

4

1 回答 1

6

您需要使用可比较的类型(即可以使用 < 运算符或提供您自己的比较器作为第二个模板参数

char(和 wchar)仅可用于数组,因为它char不一定与 unicode(UTF8 版本)中的实际字母相关,这有其他陷阱会绊倒 D 中的新编码器

dchar另一方面,总是对应于一个字母,因此可以与另一个字母相比较,

D 中的经验法则始终使用dchar,除非它用于字符串类型(甚至考虑使用 dstring)

于 2012-11-08T19:22:20.670 回答