我正在尝试在 D 中编写一些非常简单的代码,但是我在使用其中一个标准库模板函数(特别是nextPermutation
from std.algorithm
)时遇到了一些问题。
我要做的关键是创建泛数字的所有排列(即,包括所有值 1 到 9 的数字恰好一次)。
为此,我做了以下工作:
import std.algorithm;
import std.conv;
int[] pandigitals()
{
char[] initial = "123456789".dup;
auto pan = [to!int(initial)];
while(nextPermutation!(initial)) {
pan ~= to!int(initial);
}
return pan;
}
这给了我错误:
错误:无法解析 nextPermutation 的类型!(初始)
我还尝试明确设置类型:
while(nextPermutation!("a<b", char[])(initial))
但是,这会给出一个错误,指出它无法匹配模板:
错误:模板实例 std.algorithm.nextPermutation!("a < b", char[]) 与模板声明不匹配 nextPermutation(alias less = "a < b", BidirectionalRange)(ref BidirectionalRange range) if (isBidirectionalRange!BidirectionalRange && hasSwappableElements!BidirectionalRange)
调用的正确形式是什么?