我是一个刚学C++的小白。我想请问下,C++即没有python的numpy pandas,也没有matlab直接处理数据的功能,连从excel里面导入数据都超级麻烦,更别说实现遗传演算法的框架什么的了。我就想请问下,这个看上去啥都没用的C++,真要用来开发演算法进行数据分析什么的,咋做啊?我看招聘都有C++在数据挖掘演算法方面的岗位,用C++咋做啊?


1. 怕是你不知道这世界上还有库这玩意。打个比方,跟没库的 C++ 一样,没有包的 Python 也屁都不是。

  • 譬如线性代数的库 https://gitlab.com/libeigen/eigen
  • 譬如读写 Excel 的库 https://github.com/tfussell/xlnt
  • 另外在这个列表里也有一些机器学习相关的库 https://zh.cppreference.com/w/cpp/links/libs
  • 除了上面以外,还有很多优秀的库,在 github 上多逛逛都能发现

再不济,C++ 作为和 C 兼容的语言,也能天然地和 Python 等一大波语言交互。


2. C++ 的标准库只提供一些基本的需求,当然不可能包办所有事项,就像 Python 的语核部分也没什么东西。要更多功能只能靠引入第三方的库/包。题主作为初学者不知道这些也无可厚非。相比 Python 下包很多很方便,C++ 没有一个通行的包管理系统是很大的硬伤。这样相比 pip 下一键安装,C++ 库的安装会比较麻烦。有的 C++ 库不是下载一个压缩包然后解压缩那么简单,甚至有的库是需要自己本地编译的。这一点就限制了很多优秀的库的传播。


3. 你谈到的这些东西本来就不是 C++ 适合的领域,所以用 C++ 做这些本来就很小众。C++ 适合做大型的、复杂的、底层的、必须是高性能的项目,比如资料库 (例:MySQL),比如编译器 (gcc clang),比如游戏引擎,比如其他脚本语言的虚拟机或者运行时 (比如给 Python 写包)。


4. Python 写几个脚本看起来是很酷很拽,但那只是计算机领域的一隅。底层的东西还是 C/C++ 给你铺的。不懂点底层的东西,一辈子也就是个调包的水平。


你猜你说的那些py,matlab的功能是哪里来的?一样用编程语言写的。

编程就像搭积木,用最基础的东西搭建略微复杂一些的组件,再以此为基础搭建更复杂的,层层叠叠,最后构成像万千世界一样复杂的程序。

其他回答里告诉你所谓 库 的存在,这所谓的库就是别人编写的这些或基础或已经很复杂的组件,你可以自己组合他们加入自己的逻辑,完成任务。这就是所谓现代大多数软体开发的工作。


你说的numpy pandas等都是Python的库,在C++中同样有类似的库可以使用。

你可以在github上搜索 awesome-cpp来查看。


演算法与什么编程语言无关,一个确定的演算法用什么编程语言都能实现。


python得库都是哪里来的,你要知道如果不让你用库你自己写演算法,只依靠基础语言功能,你怎么写? 你现在做的演算法其实是基于别人的基础演算法或者部分功能演算法做二次开发,而这些基础或者功能演算法大多是由c,cpp编写而成的库,就像你买车,但是轮子 车的发动机也要有人造,不是发动机不需要制造的,像汽油一样直接就有的。


  1. cpp也有库,一样的,那么多好用的功能都是别人写的
  2. cpp性能好一些,所以在对性能敏感的场所会用到


你明显不适合这个岗位,放弃吧,换别的。


这些python包底层都是用C++实现的啊


你用的这些所谓的库,都是站在巨人的肩膀上,要没他们,你能用的这么香? 然而底层就是用这些觉得很烦的c/c++ 写的


推荐阅读:
相关文章