为什么使用 C++
前面几篇文章也写了一些代码,相信大家也有了一些感受,C++是一门极其自由、功能非常强大、语法又非常复杂的编程语言。那为什么还要用C++,在机器学习当中,C++如此之流行,包括我们知道的TensorFlow,Coffee,还有腾讯出的NCNN这个深度学习框架,他们都是使用C++编写的。这里面最大的考虑其实就是尽可能发挥硬件的性能。C++ 编写出来的程序执行效率远远高于Java、C#,更胜Python,其实大家要知道,Python这门语言执行速度往往都是在排行榜里面垫底的。跟JavaScript还是有一拼的。
如何权衡 C++ 和 Python
那可能有人要考虑。那我到底要不要去权衡Python和C++的使用呢,从我的观念上来看这个问题是这个样子的。很多之前从事数据科学或者研究领域的研究人员他们原来可能会很多的去使用MATLAB,那么Python提供了很简单的编程语法。也是非常灵活、非常流行的一门胶水语言,所以他们寻找到了一种很好的替代方案。在编程世界当中,使用Python去做。但是呢,在实际的工业产品当中,使用Python,据我了解还是比较少的。因为考虑到性能、产出种种方面的考虑。还有产品质量方面的考虑,往往呢,会使用纯C++的程序去进行编写。但又考虑到说,那我只提供C++,肯定是不够的吗,让所有人去学习C++也不现实,所以呢,往往会在C++程序、机器学习或者深度学习框架的基础上,封装Python的编程接口。这样通过Python的调用,来调用C++代码,来执行一些业务逻辑。所以大概的结构是这个样子的。
另一方面,大家应该已经很熟悉咱们前面提到的 numpy了吧。Python里面常用的矩阵运算的Library。大家注意了numpy是在Python里面使用,但是numpy也是基于C++编写的。所以,C++在机器学习领域实在是上帝赠送的礼物,也非常的重要。
指针
今天咱们去来看一看C++里面的指针。
指针的解释
*:星号,指针里面的一种类型表示形式。指针也有不同的解释方式,从我的理解,我希望大家可以把指针当作一种特定的类型。跟其他的int、float、double是一个概念。都把它认为是一种类型。指针是一种类型。大家注意这个概念。从这个角度理解指针这件事更好理解,否则的话这件是还挺难讲的。
&:这个与符号在这里不是与符号,在某些情况下有特定的含义,C++里叫取地址符。
今天咱们就来讲讲这个指针和取地址符怎么用,又是怎么回事。
指针的写法
看上图,后两种写法也可以,但是我没有用,因为我们把指针看作一种类型:类型为整数的指针。
指针在内存当中的样子
a本身是一个变量,会指向对象真正的首地址。这就是一个最基本的指针的定义。
指针到底有什么用
这个问题非常关键,因为在C++当中为了保证效率,我们常常去操纵内存。为什么今天在咱们会讲指针这件事呢。因为在C++当中