我有这段代码,我必须用类A(构造函数,析构函数,复制构造函数,运算符=)来写适当的代码,我的问题是,如果我想让这段代码完美地工作,我需要写智能指针吗,如果不需要,你能解释一下写智能指针在哪里有用吗,提前谢谢
A *pa1 = new A(a2);
A const * pa2 = pa1;
A const * const pa3 = pa2;
让我们说我们有以下几点:
l = map f (map g [1..100])
我们想要:
head l
所以我们得到:
head (map f (map g [1..100]))
现在,我们必须得到第一个元素。map的定义如下所示:
map f l = f (head l) : (map f (tail l))
所以我们得到:
f (head (map g [1..100]))
然后再次申请:
f (g (head [1..100]))
这会导致
f (g 1)
仅仅由于懒惰,没有形成中间列表。
这个分析正确吗?像这样简单的结构:
foldl' ... $ map f1 $ map