C++标准库 std 里面简直就是另外一个世界

2021-01-20 09:51:40 +08:00
 James369
在写 C++的时候,不小心点进 std 标准库的.h 头文件,只是看了一眼它的源代码。
我去,一堆的 template 操作,一堆的__下划线,一堆的...变参。。。
仿佛进入了另外一个世界,C++的水真深啊。
我想如果看懂 std 源码,我觉得差不多也就学成了吧。
11405 次点击
所在节点    C++
83 条回复
towry
2021-01-20 09:58:11 +08:00
看懂文言文不代表能写出好的文章
auto8888
2021-01-20 10:06:04 +08:00
能完全看懂 std 源码应该可以说得上精通 C++了吧。。。。

![image.png]( https://i.loli.net/2021/01/20/2NlBvkcO3qHarzT.png)

看的想死
yanqiyu
2021-01-20 10:06:25 +08:00
下划线只是为了避免不必要的冲突,至于一堆 template...嗯,因为人家叫做 STL
James369
2021-01-20 10:08:42 +08:00
@towry 我翻译一下:精通砖头泥水铲子,但不一定会盖房子。
Twice
2021-01-20 10:10:22 +08:00
候捷老师的 《 STL 源码剖析》 ,都是大师啊
Twice
2021-01-20 10:11:50 +08:00
而且之前看他视频,也说其实 stl 里面一些容器类,是有优化空间的🤣,但是还远没这水平
James369
2021-01-20 10:13:10 +08:00
@Twice 可以说,template 完全是另外一种编程模式,神奇
shunia
2021-01-20 10:44:55 +08:00
我就想说 2 楼,搞 C 语言就必须用这种我一眼看过去直接眼花的字体和配色吗?
你们这些底层开发人员就不能对自己好一点,搞一些现代化的东西,非得整电话机 010101 那套吗?
而且现在市面上方便好用的 C 的 IDE 多的是吧?

我是真的替你们感到眼睛累。。。手动狗头
CismonX
2021-01-20 10:47:21 +08:00
你可以把 C++ 的类型系统当作另外一门(纯函数式的)语言。如果熟悉函数式编程的思想,template metaprogramming (不限 C++)并不是非常困难

另外提醒一下,双下划线和单下划线加大写字母开头的名称都是预留字,只有语言实现里面允许用(比如在 STL 或者 libc 中)
blodside
2021-01-20 10:50:07 +08:00
<type_traits> 里面的那堆东西更有意思,模板真好玩
myid
2021-01-20 10:53:50 +08:00
炫技往往是坑,容易走火入魔。

不在其位,别谋其政。如果不是开发基础库,那么用不着那些个。C++ 和 C 的妙处根部不在于用了多少它的特性,而在于如何用尽可能它的最简单的特性最高效的完成既定任务。

话一句话说,能用 struct 搞定的,别硬用 class 。能用普通函数搞定的,没必要非得 template 化。能用 C 风格的字符数组搞定,就没必要用 std::string 类。

简单是力量的保证。直白易懂是可持久可维护的护身符。
defphilip
2021-01-20 10:59:43 +08:00
里面的 template 完全就不难啊。。。就一堆类型推导
hitmanx
2021-01-20 10:59:44 +08:00
不同的编程范式带来的陌生感。
XIVN1987
2021-01-20 11:09:04 +08:00
@myid
你这说法和书上说的不一样啊

书上都说能用 std::string,不用 C 风格的字符数组;能用 std::array,不用 C 风格的数组
focux
2021-01-20 11:29:25 +08:00
那你还不如看 boost 源码呢
skyworker
2021-01-20 11:32:42 +08:00
泛型是当时 C++的一个风格, 忘记了好像是相对于"对象 /继承"这种 "运行时多态" 之外, 通过 template 技术来实现 "编译时多态", 不过貌似当时被排斥为"异端"
auto8888
2021-01-20 11:43:29 +08:00
@shunia IDE 是 qt creator 主题 dark 字体 courier 请指教 /doge
abc612008
2021-01-20 11:47:13 +08:00
@myid 建议直接用 c
1490213
2021-01-20 11:48:55 +08:00
组里部分老 C++ 代码不好的两个倾向:
一,追求技巧和花样,县城盖白宫。
二,半吊子整出的幺蛾子多,配合起来困难。
shunia
2021-01-20 11:55:02 +08:00
@auto8888 #17 我不是 C 程序员,完全不懂哈,我只是觉得您的截图,字体和配色太花眼了,我第一眼看过去就觉得看代码的成本太高。虽然 IDE 只是点缀,但是从某一个角度来说,配合熟练并且本身就更优秀的 IDE,应该相对来说更能提高工作效率。当然这点我有点主观,看看就好。

另外如果只考虑 IDE 本身,并且非要推荐的话:
假如没有特殊情况的话,比如 sublime text,相对来讲默认样式要养眼很多。
再现代化的就可以考虑 vscode 或者 Jetbrain 家的产品是否能满足你的开发要求。

我不懂 C/C++,所以考虑不到这些 IDE 是否适合对应的工作流。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX