V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  GeruzoniAnsasu  ›  全部回复第 58 页 / 共 142 页
回复总数  2833
1 ... 54  55  56  57  58  59  60  61  62  63 ... 142  
2022-01-14 08:17:53 +08:00
回复了 amiwrong123 创建的主题 C++ inline 不能修饰一个全局函数呗?
首先…………………………

extern 是「外部声明」,它的作用是告诉链接器 (!!) 注意不是编译器,到其它文件去找这个符号。如果 extern 直接放在定义的地方,则是告诉链接器「我这个符号应该让所有地方都能看得到」。

但你这里 extern 只是一个声明。


第二件事,inline 的意义在于告诉编译器 (!!) 注意是编译器,我这个符号的定义可能会重复出现很多次(因为会被 include 到不同文件里去),你就直接把找到的定义照抄放到调用点就行,不用暴露,不会有文件要链接我。




所以你正在试图一边让链接器去找某个符号,一边让编译器不要暴露这个符号以供链接……




「 inline 的非 static 全局函数」是这样的:

a.h
inline void g_f(){}

a.c
#include "a.h"
void a(){g_f();}

b.c
#include "a.h"
void b(){g_f();}

main.c
extern void a();
extern void b();
int main() {a();b();}
翻译一下#13:

「哥几个都吸烟长大的你老几啊说三道四的,不怕走路给你一顿削啊」
你这脚本里双引号套双引号了真的没问题吗……
「输入了不存在的路径」 第一反应是有空格捣乱
2022-01-13 17:00:05 +08:00
回复了 lymith 创建的主题 分享创造 独立开发,小有收获
提供了新思路 以前只想过随便写点小东西,复制粘贴还真没想到 学习了
2022-01-13 16:56:12 +08:00
回复了 dongdongdong 创建的主题 问与答 为什么安卓阵营都抛弃了弹出式摄像头
臭直男的跑到产品这边提要求来了(
2022-01-13 16:50:41 +08:00
回复了 youyoumarco 创建的主题 互联网 想知道大家对现在“元宇宙”怎么看
@source 你…… 在仔细看看? 我看到的几乎都是讽刺
gdb 配 https://github.com/hugsy/gef

大型项目根本没什么机会直接挂调试器……几乎都在看 core dump 了



建议提供点更详细的信息,平台、项目组织形式(比如你要调 lib 还是 executable ,有没有单测和 mock 等等)
2022-01-13 16:20:07 +08:00
回复了 timi 创建的主题 问与答 有 1 个输入字符串,和 1 万个正则,如何找到哪个正则匹配
…… 你应该尝试把那 1w 个正则编译到一起去

既然是路由分发,那么这些正则就必然是静态的,你完全可以把时间都放到编译期。
之前做过一些极重规则的东西,数以万计内置规则,我们用了这个
http://www.colm.net/open-source/ragel/

虽然编译要跑一个小时,但是运行快啊(
2022-01-12 17:36:16 +08:00
回复了 ligiggy 创建的主题 C++ 左值右值,有没有通俗易懂且具体的资料
@Jooooooooo 歪个楼,你以为的高性能是在减少冷分支……实际上写「高性能代码」的人都已经在 probe CPU 的 register file 有多大了
2022-01-12 02:00:11 +08:00
回复了 hoko1814 创建的主题 问与答 大家看过什么叙事宏大的影视作品么?动漫电影电视都算。
我第一反应是《云图》
但其实我对这电影也不是很满意,有点过于故弄玄虚,叙事结构也没有把它的精神内核表现得很好,有些遗憾
2022-01-11 21:56:50 +08:00
回复了 cwcc 创建的主题 问与答 2022 年了,没有手机的情况下能否生活下去呢?
我问两个问题

农村小孩有手机吗?
你手机丢了还能正常上班回家吗?



农村小孩生活完全不受影响,但你麻烦就大了。

开个题外玩笑: 你没必要跟 35 岁后出现的那些天谴科技对着干
2022-01-11 21:46:08 +08:00
回复了 ligiggy 创建的主题 C++ 左值右值,有没有通俗易懂且具体的资料
> 比如 cpprefrence 的这个: https://en.cppreference.com/w/cpp/language/value_category


----

那么你看这个了吗: https://zh.cppreference.com/w/cpp/language/value_category

没开玩笑,如果你觉得英文版还不够通俗易懂,有翻译好的中文版而且质量没什么问题,别因为莫名其妙的「鄙视感」忽略它。

c++中值类别的最大作用或者说区分它的意义就是用来判定能否「减少复制」(无论 copy elision 还是 move semantics )。我相信凡是写过 c++代码的人都一定对「对象复制」有一些直觉,标准中去界定这些值类型只不过把你想到或没想到的地方都公理化了而已



还有,别看 c++11 了,直接从 c++17 看起。c++11 作为 morden c++的第一个版本很多地方都是不成熟的
@LaGeNanRen 你用得上,就算你最后连去都不去了,还是能分享给更多人知道
2022-01-11 17:24:43 +08:00
回复了 valuable 创建的主题 Steam 我 男 朋 友 不 让 我 给 你 们 发 枪 [CSGO]
绝了这视频为什么能传到这来
https://i.imgur.com/INomVbh.jpg

作为常年泡崇礼的人可以告诉你新手第一次滑其实摔不了多严重。我去搜了一下你去的地方,应该也就两个用来体验的小坡,还没融创大。

以下建议依重要性排序
依重要性排序
依重要性排序!


1. 绝对绝对不要上高级道,哪怕你觉得你能上,或者你「就只想看看,大不了出溜下来」也 (!!!) 绝对不要上。只有有经验的人才能评估得了你水平上更高级的雪道有没有危险,你一开始是评估不了的
2. 在平地上学会摔跤,学会把衣服弄脏,学会打滚翻转山下脚 /山下刃。单双板安全摔倒的方式是 (!!) 完全不同的,一定要先找个教学视频自己看看!
3. 往下滑的时候时刻保持刹车,不要放直板自由落体,时刻刹车!
4. 先学刹车 。 (!!) 注意比起学会刹车,保持时刻刹车的想法更重要
5. 当你离障碍物(或人、网)还有 2 米的时候,立即主动摔倒,不要觉得自己能刹住,你不能。
6. 戴好头盔和手套,雪镜看自己情况,这种一两条道的小雪场不至于雪盲,雪盲是指周围一片白的时候你会分不清脚底地形和方向,一般没上过大山体验不到。雪镜的意义也就太阳镜+挡风镜,有些人不需要。
7. 如果你玩单板,那一定要背小乌龟,虽然断了尾椎也不至于回不去了,但小乌龟可以 100%避免这种事发生(头盔都还不能 100%避免摔得脑震荡呢)
8. 鉴于你去的地方,十分不建议你尝试玩单板。因为单板需要坡度合适的雪道,不能太缓不能窄雪层不能太薄,我不确定你到时候会不会有正常体验
9. 别买专业衣服,用不着。作为参考,5℃以上气温一件长袖保暖内衣+单层薄外套或短袖+雪服外套;-10℃气温长袖速干+保暖夹层+雪服外套;杭州不可能冷过-10℃吧
10. 熟读国际雪联的安全十则




再来普及一下常见伤都是怎么造成的
撞击:
头 /脑 /面部: 撞树 /柱子 /撞人 /落跳台后仰 /高速劈弯弹飞后落地的鞭打效应(跟摩托 high side 摔车类似)
锁骨 /小臂: 与人相撞
肋骨:撞人 /在雪道外摔倒(魔毯台子上翻下去了之类的)、双板两脚打架踩板向前摔倒被自己雪杖 /板 /胸口口袋的手机硌到
手指: 与人相撞后板刃砍伤 /摔倒时不扔杖子,夹伤
腰椎 /尾椎: 后仰滑倒,多见于单板后刃滑倒、面朝山上时卡后刃等 /或者被人铲
小腿: 双板躺倒滑的时候撞到障碍物(有高度的台子或者别人的板)/飞出雪道撞到山体石头
脚趾 /趾甲: 高台落地吸收不好,撞击鞋壳
扭伤:
上半身:不多见
十字韧带:双板踩板后强行发力调整姿势 /坑包道( mogul )动作或发力不对被地形扭伤 /与人相撞板子被掰扭
脚踝 /脚腕:不正确的外刃受力,但不多见

你会发现受伤方式其实大多跟初学者无缘,但唯独撞人例外,花式非常多而且也能造成比较严重的后果。我个人呢,以上列的所有部位全都「感受过」,但没受过很严重的伤,最严重的大概也就扭到膝盖手指被砍了(骨头裂了)


最后再来做个算数:
一条 400 米的初级道,坡度 4°(7%),斜面长 400 ,落差为 400*sin(4°)=27.9 米,约等于 10 层楼,如果这个高度的重力势能按 10%的效率转化成动能 0.1mgh=0.5mv^2 v≈7.39m/s≈26km/h ,比路上的电动车都快。当你想「就这么溜到坡底吧」的时候,想想 10 层楼,想想电动车。
2022-01-10 14:28:08 +08:00
回复了 Livid 创建的主题 云修电脑 Reset 解决一切问题
感谢排雷,本来一直不敢用来着(
2022-01-10 04:10:10 +08:00
回复了 learningmachine 创建的主题 程序员 c++哈希表的问题
…………

我去看了半天你附的原视频
首先时间对不上…… 原视频讲 hash map / unordered_map 的部分在「 fast associative containers 」这节( t=1532 )

然后更重要的点在于,原视频并没有讲开放定址法会更快

仅仅是提了一下「 or you can use something like google's dense hash map 」这个 hash map 是 open addressing 实现,它的优势是不需要链表但 hash 冲突会难以管理。

然后引出了他要表达的关键思路: 尝试一种能混合两种 hash table 优点的新实现。
并且介绍了一下他们自己的 hash table 大概原理是怎样的:
1. 把 hash 和指向元素的指针放在一起
2. (!!)当查找元素发现对应 slot 的 hash 不对时(即在查的 hash 冲突),那么根据空槽探测法(尤指线性法)就会去尝试相邻的下一个槽,而相邻槽已经被读入 cache 了,所以会很快


但是呢
1. 在他的 benchmark 里,10 个样本量也已经比 std::unordered_map 快了一倍,说明主要效率提升其实并不是 open addressing 的效果,而是他的代码本来也更快
2. 他的实现中,提高 cache 命中率与线性探测法是相互绑定的,因此没有提线性探测容易带来的聚集问题
3. 他的实现提升了查找冲突元素的 cache 命中率,但完全牺牲了访问 value 的命中率,因此在理想状态(即不存在冲突)的场景下,他的实现是要比「经典实现」(即 key 和 value 和 hash 都在一起)要慢的,查找时 hash 冲突的几率有多高,你在自己的场景下还得考虑
4. 由于他这个例子优化有效的场景就在发生冲突时,所以基于同样的思路你完全可以在链地址法的实现中进行优化: 给你的冲突链预先分配一定的连续空间,在连续空间中放跟他例子一样的 key+ptr 结构,当冲突时也是一次性读完所有的 key 候选,理论上来说跟他这种实现不会有什么区别
1 ... 54  55  56  57  58  59  60  61  62  63 ... 142  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2567 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 59ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.