MoonBit月兔编程语言 现代编程思想 第七课 命令式编程:命令,可变数据结构,循环变量 - 在月兔中,我们可以在代码块中用 let mut 定义临时变量 1. let mut x = 1 2. x = 10 // 赋值操作是一个命令 - 在月兔中,结构体的字段默认不可变,我们也允许可变的字段,需要用 mut 标识 1. struct Ref[T] { mut val : T } 2. 3. fn init { 4. let ref: Ref[Int] = { val: ref.val = 10 // 我们可以修改结构体的字段 6. println(ref.val.to_string() // 输出 10 7. } ## 变量 • 我们可以将带有可变字段的结构体看作是引用 $$ var x=1 $$ $$ \begin{array}{r|r}x&1\\\hline x=2\end{array} $$ $$ let ref=\{val:1\} $$  ## 别名 - 指向相同的可变数据结构的两个标识符可以看作是别名 1. fn alter(a: Ref[Int], b: Ref[Int]) { 2. a.val = 10 3. b.val = 20 4. } 50 码力 | 23 页 | 780.46 KB | 2 年前3
MoonBit月兔编程语言 现代编程思想 第八课 队列:可变数据实现## 现代编程思想 队列:可变数据结构实现 Hongbo Zhang ## 队列 - 我们曾经介绍过队列这个数据结构 - 先进先出 ☐ 利用两个堆栈进行实现 - 我们利用可变数据结构进行实现 - 基于数组的循环队列 ☐ 单向链表 ## 队列 • 我们实现以下函数(以整数队列为例) 1. struct Queue { ... } 2. 3. fn make() -> start: 0, end: 0, length: 0 5. } 6. } ## • 默认值应该是什么? Option::None T::default() ## 单向链表 - 每个数据结构都指向下一个数据结构 - 像锁链一样相连 1. struct Node[T] { 2. val: T 3. mut next: Option[Node[T]] // 指向下一个节点 aux2(node.next, 1 + cumul) 6. } 7. } 8. aux2(self.head, 0) 9. } ## 总结 • 本章节我们介绍了使用可变数据结构定义队列 ☐ 循环队列与单向链表的实现 ☐ 尾调用与尾递归0 码力 | 19 页 | 314.79 KB | 2 年前3
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)。 ;0 码力 | 33 页 | 620.46 KB | 2 年前3
Back to Basics: Designing Classes (part 1 of 2)0 码力 | 87 页 | 5.64 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.1. 变量与可变性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 15.5. RefCell与内部可变性模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust 中,创建自定义类型需要用到结构体和枚举。 第七章介绍 Rust 的模块(module)系统,其中的私有性规则用来组织代码和公开的 API(应 用程序接口)。第八章讨论标准库提供的常见集合数据结构,例如 Vector(向量)、字符串和 Hash Map(散列表)。第九章探索 Rust 的错误处理的理念与技术。 第十章深入介绍泛型(generic)、Trait 和生命周期(lifetime),这些功能让你能够定义适用 0 码力 | 562 页 | 3.23 MB | 8 月前3
Rust 语言学习笔记loop.....20 2.3.4 break 和 continue.....20 2.3.5 label.....20 2.4 Rust 类型系统.....21 2.4.1 可变性.....21 2.4.2 原生类型.....21 第三章 所有权 引用借用 生命周期.....31 3.1 所有权.....31 3.1.1 绑定.....31 trait.....33 3.1.8 高级 move.....34 3.2 引用和借用.....35 3.2.1 借用和引用的规则.....35 3.2.2 引用的可变性.....36 3.2.3 总结.....36 3.3 生命周期.....37 3.3.1 隐式 lifetime.....37 3.4 高级所有权.. 函数传递参数和返回参数类似于 let 语句.....38 3.4.2 涉及到函数和结构体的借用检查器.....39 第四章 面向对象编程.....43 4.1 面向对象数据结构.....43 4.1.1 元祖.....43 4.1.2 结构体.....43 4.1.3 结构体的方法.....44 4.1.4 再说结构体中引用的生命周期..0 码力 | 117 页 | 2.24 MB | 2 年前3
Hello 算法 1.0.0b1 JavaScript版FEELO FEELO FEELO FEELO FEELO FEELO FEELO FEELO > Hello 算法 动画图解、能运行、可提问的数据结构与算法入门教程 作者:靳宇栋(Krahets) Hello 算法 JavaScript 语言版 靳宇栋(Krahets) 












