在此之前,我一直在学习代码在学校(矢量,字符,二维数组,没什么太花哨的),并在CodeBlocks中用C++编写代码.一个月前,我开始从C++ Primer学习.我现在处于矢量类型,我对此感到困惑.当我以前使用向量时,我从未包含任何其他库,我声明了这样的向量:
#include <iostream>
int main ()
{
int v[10];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,矢量以更复杂的方式定义,使用vector库,提及定义中的元素类型等等.
我只是想知道如何在主题上有这么大的差异我认为相当容易.这些载体究竟是什么问题?
我需要为Flip数据类型编写 Functor 实例:
data K a b = K a
newtype Flip f a b = Flip (f b a) deriving (Eq, Show)
instance Functor (Flip K a) where
fmap=undefined
Run Code Online (Sandbox Code Playgroud)
我在课堂上给出的解决方案是:
instance Functor (Flip K a) where
fmap f (Flip (K b)) = Flip (K (f b))
Run Code Online (Sandbox Code Playgroud)
我真的不明白这里发生了什么,我开始怀疑我对数据类型和函子的整体理解。我所理解的是这个(如果有任何错误,请纠正我):
K是一种将 2 个参数转换为结构的数据类型K a(仅保留第一个参数)Flip 是一种将 3 个参数转换为一个结构的数据类型fmap :: (a-> b) -> f a -> f b,f a有种*,要写 Functor …我试图理解这段代码.我一直在想弄清楚为什么d以及e是int*和const int*.我可以使用一些帮助.
const int ci = i, &cr = ci;
auto b = ci; // b is an int (top-level const in ci is dropped)
auto c = cr; // c is an int (cr is an alias for ci whose const is top-level)
auto d = &i; // d is an int*(& of an int object is int*)
auto e = &ci; // e is const int*(& of a const object …Run Code Online (Sandbox Code Playgroud)