C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型区间内的正数,非常方便。  ## 对稀疏数据结构造成的问题 - 如果这里的 x 是负数,则 x % B 也是负数,会造成对 m block 的越界访问。 - 因此 % 会返回负数对 CFD 用户来说是个很大的坑点,很多人想当然地用 % 做循环边界,然而这对负方向会不起作用。 的整除运算 a // b 的值始终是向下取整,非常方便。 >>> -7 // 4 -2 >>> 7 // 4 1 >>> ## 对稀疏数据结构造成的问题 - 也就是说,如果 x 是 [-3,0] 则 x/B 会是 0,如果 x 是 [0,3] 则 x/B 也是 0。导致两个同时跑到一个 block 上去,会出错。 void write(int unordered_map) • pointer 指针(本例中的 Block1) • dense 稠密(本例中的 Block) • 他们之间可以相互组合,形成更复杂的稀疏数据结构。 - 下面这个例子中的稀疏数据结构,用这种语言可以表示为 hash().pointer(11).dense(8)。  ## 别名 - 指向相同的可变数据结构的两个标识符可以看作是别名 1. fn alter(a: Ref[Int], b: Ref[Int]) { 2. a.val = 10 3. b.val = 20 4. } 5. : 1 } 8. alter(x, x) 9. println(x.val.to_string() // x.val 的值将会被改变两次 10. } ## 别名 - 指向相同的可变数据结构的两个标识符可以看作是别名  - Int View No quick fixes ## 可变数据 • 使用场景广泛 ☐ 直接操作程序外环境,如硬件等 ☐ 一些情况下性能更好,如随机访问数组等 ☐ 可以构建部分复杂数据结构,如图 ☐ 重复利用空间(原地修改) - 可变数据并不总是与引用透明性冲突 1. fn fib_mut(n: Int) -> Int { // 对于相同输入,总是有相同输出 2.0 码力 | 23 页 | 780.46 KB | 2 年前3
Hello 算法 1.0.0 Rust版FELLO FELLO FELLO FELLO FELLO FELLO FELLO FELLO FELLO FELLO >Hello算法 动画图解、一键运行的数据结构与算法教程 靳宇栋 (@krahets) ## Hello 算法 Rust 语言版 作者:靳宇栋 (@krahets) 代码审阅:伍志豪 (@night-cruise) Release 1.0.0  ## Hello 算法 Kotlin 语言版 作者:靳宇栋 (@krahets) 代码审阅:陈东辉 (@curtishd)  ## Hello 算法 C 语言版 作者:靳宇栋 (@krahets) 代码审阅:宫兰景 (@Gonglja)  ## Hello 算法 JavaScript 语言版 作者:靳宇栋 (@krahets) 代码审阅:谢发 (@justin-tse)  Hello 算法 C++ 语言版 靳宇栋(Krahets)  ___ 著 ## Hello 算法 Ruby 语言版 作者:靳宇栋 (@krahets) 代码审阅:阮春科秀 (@khoaxuantu) Release 1.2.0  Hello 算法 Swift 语言版 靳宇栋(Krahets) 












