3.5 马尔科夫链算法的具体实现(Java环境下)
3.6 马尔科夫链算法的具体实现(C++环境下)
因为C++语言几乎是C的一个超集,只要注意某些写法和规则,C++一样可以以C的形式去使用,实际上在上一篇中,我得所有输入输出就是用的C++中的基本输入输出流。对于C++来讲,更合适的用法应该是定义一些类,建立起程序中需要的各种对象,这样可以隐藏起很多实现细节。在这里,我们更进一步,使用C++的STL(标准模板库),它不仅给我们提供了很多内部机制,更重要的是,它已经被ISO列入到C++的语言定义中了,我们可以放心的使用。
在这里,说到为什么有C++还要学习C,甚至我第一个写的实现就是C。个人来讲,可能是觉得C比较好玩吧,所有的操作都是你可以看到的。我喜欢将C比作一把双刃剑,喜欢那种锋利的感觉(是不是玄幻看多了)。还有可能是学校第一门计算机语言类的课就讲的C,到现在还能记住拿C+OpenCV1.0写的曼德勃罗集合...
STL提供了许多的容器类,例如向量、链表、集合,还包括了许多检索、排序、插入和删除等等的基本算法。利用C++的模板特性,每个STL算法都能用到很多不同的容器类上。容器类的元素可以是用户定义类型或者是内部类型的。这里的容器都被描述为C++模板,可以对特定类型进行实例化。例如,STL里有一个vector容器类,由它可以导出各种具体类型,比如vector<int>;vector<string>等。所有的vector操作,包括排序的标准算法,都可以直接应用到这些数据类型。
在STL里,除了有vector容器(它与Java的vector类差不多)