我现在正在学习STL.我读到了set容器.我有问题什么时候想用set?在阅读了集合的描述后,看起来它没用,因为我们可以替代它vector.你能说vectorvs set容器的优点和成本吗?谢谢
data Plane = Plane { point :: Point, normal :: Vector Double }
data Sphere = Sphere { center :: Point, radius :: Double }
class Shape s where
intersect :: s -> Ray -> Maybe Point
surfaceNormal :: s -> Point -> Vector Double
Run Code Online (Sandbox Code Playgroud)
我也做了两个Plane和Sphere实例Shape.
我试图将球体和平面存储在同一个列表中,但它不起作用.据我所知,它不应该工作,因为Sphere和Plane两种不同的类型,但他们的两个实例Shape,所以它不应该工作?如何在列表中存储形状和平面?
shapes :: (Shape t) => [t]
shapes = [ Sphere { center = Point [0, 0, 0], radius = 2.0 }, …Run Code Online (Sandbox Code Playgroud) 我试图理解之间的区别const ref和in,特别是当它涉及到性能.
我知道这in相当于const scope,但是什么the scope storage class means that references in the parameter cannot be escaped (e.g. assigned to a global variable).意思?示例代码是受欢迎的.
如何在实现功能之间const ref和之间做出决定in?我知道ref对象不会被复制,因为它是一个引用,但是同样如此in?
为什么GnuPG中的RSA密钥限制为4096位?
修改源代码以增加最大大小是不合法的吗?
ssh-keygen没有这个限制(例如,我可以创建一个长32768位的密钥).这是为什么?
我习惯了C++ STL容器.D有数组,关联数组和字符串,但其余部分在哪里?我知道std.container,但据我所知它只有一个容器,红黑树,如果我需要类似的东西,我可以使用它std::set.但是,如果我需要一个list怎么办?我应该使用数组吗?
std::vector - > array
std::deque - > ?
std::queue - > ?
std::stack - > ? maybe array and std.container functions ?
std::priority_queue - > BinaryHeap
std::list - > ?
std::set - > std.container RedBlackTree
std::multiset - > ?
std::unordered_set - > ?
std::map - > associative arrays
std::multimap - > ?
std::unordered_map - > ?
有没有计划支持任何失踪人员?
除了句法上的差异,两者本身是否相同?它们都是用核心语言实现的吗?或者是foreach标准库的一部分?就性能而言,如果我选择一个而不是另一个,它会有所作为吗?
我对Haskell和FP很新.我已经阅读了许多描述currying的文章,但我还没有找到它如何实际工作的解释.
这里是一个功能:(+) :: a -> (a -> a)
如果我这样做(+) 4 7,该函数将4返回一个函数,7并返回11.但是会发生什么4?第一个功能是做什么用的4?怎么(a -> a)办7?
当我考虑更复杂的功能时,事情变得更加混乱:
max' :: Int -> (Int -> Int)
max' m n | m > n = m
| otherwise = n
Run Code Online (Sandbox Code Playgroud)
什么(Int -> Int)比较它的参数?它只需要一个参数,但它需要两个参数m > n.
这一直是我一直在使用alias,但今天我偶然发现D有typedef.有趣的是,据我所知,TDPL甚至没有涵盖它(甚至D Keywords没有在勘误表中列出).该网站确实涵盖了它,但它没有谈论它.我的代码编译有两种,但两者有何区别,什么时候应该使用typedef过alias?
有多少可表示彩车之间是否有0.0和0.5?又有多少表现的彩车之间是否有0.5和1.0?我对它背后的数学更感兴趣,我需要答案floats和doubles.
到目前为止,我的印象是存储类immutable和const存储类.在最近的视频中(大约11点55分), Walter Bright表示这immutable不是一个存储类,而是一个类型构造函数.在官方文档,immutable,const,和在许多其他的关键词,被列为是存储类:
StorageClass:
abstract
auto
const
deprecated
enum
extern
final
immutable
inout
shared
nothrow
override
pure
__gshared
Property
scope
static
synchronized
Run Code Online (Sandbox Code Playgroud)
这个清单错了吗?其中一些没有意义(例如,弃用,覆盖).
我知道static并且ref是存储类,但其余的是什么?D中的哪一个关键字是类型构造函数?