大家好,我是一名 C++码农,因为在平时工作 /面试的过程中经常会遇到一些关于 C++的细节,而这些知识点大多散在各种书 /博客 /github repo 里,所以我想把这些只是总结成每个 10mins 左右的视频,分享给大家,也是我自己对自己知识图谱的一个总结。我在录这个视频的时候面对的对象人群是 junior C++ developer,想好好准备 C++知识面试,或者是想学习一些跟 C++有关的能应用在工作中的 best practice 。因为我自己在国外,所以有些时候有些中英混杂,实在不好意思。
下面是第三个视频,讲的是关于 C++中自带的哈希表,为什么它有那么一丢丢慢~
希望大家喜欢我的视频,也希望大家指出我视频中的错误~
b 站: https://www.bilibili.com/video/BV1ah411y7Ni
youtube: https://youtu.be/nx5g5bwtUuA
还烦请大家给我一键三连,订阅我的频道,开启小铃铛~
谢谢大家~
1
elfive 2021-01-18 07:43:38 +08:00 via iPhone 3
标题党
|
3
dorafmon OP 没时间看视频的可以看我的底稿文案: https://github.com/bobfang1992/vlog/tree/master/c%2B%2B3-maps
|
4
nnqijiu 2021-01-18 08:43:08 +08:00
推广帖
|
5
AkideLiu 2021-01-18 08:48:33 +08:00
他慢他是 std
|
6
dorafmon OP @nnqijiu 嗯嗯 我之前的视频标题都是“给新手 C++程序员的 tips”这回本来想幽默一把,但是感觉好像起了反作用,但是我还是想分享这个知识的,不好意思让你觉得是推广贴了,你可以选择不看视频,底稿文案我也付在下面了。
|
8
b00tyhunt3r 2021-01-18 09:35:34 +08:00
对我来说视频形式反而比文章更易于吸收,中文圈技术短视频 up 主太少了
滋瓷一个 |
9
Monad 2021-01-18 09:39:14 +08:00 via iPhone
其实感觉讲的还不错 就是标题😅
|
11
52coder 2021-01-18 09:43:20 +08:00
资瓷,讲的不错,声音可以搞得稍微大点,视频和文件一起放出来,萝卜青菜各有所爱,已关注
|
12
XIVN1987 2021-01-18 09:43:35 +08:00
意思是 std::map 比 google 的 map 实现慢 10 倍??
那可真是够慢啊,,怪不得经常有人说 java 比 C++快,,看来也不是没可能啊 |
14
YouLMAO 2021-01-18 09:57:53 +08:00 via Android 2
std::map 是红黑树,哈希你妹妹
|
15
fps23dot9999 2021-01-18 10:01:51 +08:00
都打开-o2 优化试试
|
17
dinghao188 2021-01-18 10:16:18 +08:00
@YouLMAO unordered_map 是哈希表
|
18
anzu 2021-01-18 10:21:51 +08:00
在 closed hashing 的情况下,怎么知道查找一个元素时需要再 probing ?
|
19
sariya 2021-01-18 10:32:13 +08:00 via Android
stl 暴露实现细节那块没看懂,原文直译是“所有可见行为取决于某人”?
|
20
fengjianxinghun 2021-01-18 10:35:06 +08:00
@XIVN1987 标准库里有 std::unordered_map,那才是 hash 表,std::map 是红黑树。
|
21
jones2000 2021-01-18 10:39:36 +08:00
看源码不就知道了嘛
|
22
arvinsilm 2021-01-18 11:22:34 +08:00 1
- 推广贴请发到推广节点
- 但是推广节点没人看没效果 - 你有注意到热榜经常出现一些推广贴吗? - 为什么呢,因为他们会抽奖 - 推广有成本,不要用污染论坛环境的方式做推广 |
23
BrettD 2021-01-18 13:01:36 +08:00 via iPhone
@XIVN1987 比较语言速度会专门比较某个特定的库特性的速度吗? C++和 Java 比速度比的不是原生代码和 JVM 的速度吗?
|
24
siyemiaokube 2021-01-18 13:17:09 +08:00 via iPhone
感谢分享
不过,感觉 up 有一点点没抓到重点…… 稍微补充一点点: 平衡树维护了邻域信息,并且是稳定算法。相对地,hash table 的复杂度同时依赖于内存空间的占用以及数据量,当两者同数量级时,hash table 的速度会退化为 n^2 。我印象中(不太确定) java 的 map 设定了一个阈值,在小数据使用 hash table,数据量增大到一定程度时会使用平衡树。 不同的重 hash 方法可以理解为,给出了 hash table 从 O(1)到 O(n^2)的退化程度的曲线(同样也依赖于概率分布)。 |
25
siyemiaokube 2021-01-18 13:35:16 +08:00 via iPhone
如果是我的话,可能会这样组织 hash table 的讲授:
1:hash table 提供的 adt 2:与平衡树的比较 3:极端情况与复杂度 4:重 hash 方式,什么是好的重 hash 5:画一个 hash 函数关于内存-数据量的碰撞次数的曲线 6:工程上的常用实现 |
26
DarkCat123 2021-01-18 14:01:51 +08:00 1
@Livid 在程序员节点推广。
|
27
Leviathann 2021-01-18 18:35:54 +08:00 via iPhone
@siyemiaokube java 没那么复杂 就是链表记录冲突,冲突多余 8 就把链表转红黑树
java 的实现应该是最直接的实现之一了。。 |
28
Livid MOD @DarkCat123 谢谢举报。这个主题已经从 /go/programmer 移动到 /go/promotions
@dorafmon 请阅读 V2EX 的节点使用指南: https://www.v2ex.com/help/node 如果持续违反规则,你的账号将会被禁用。 |
29
dorafmon OP @Livid 为什么我的这个算推广而这个贴子不算? https://www.v2ex.com/t/745736#reply22 而且我之前几次分享视频都不算推广。。。我想明白站方对推广的定义。我看很多人 po 自己的博客,或者视频来分享知识,我现在也在分享我的知识为什么我的就算推广?
|
30
dorafmon OP |