Daily Rust 有关所有权和生命周期的一些问题 首先看一段代码 use std::rc::Rc; #[derive(Debug)] struct Node { id: usize, downstream: Option<Rc<Node>>, } impl Node { pub fn new(id: usize) -> Self { Self { id, downstream: None, } } pub fn update_downstream(&mut self, do…
Daily Rust 有关所有权和生命周期的一些问题 首先看一段代码 use std::rc::Rc; #[derive(Debug)] struct Node { id: usize, downstream: Option<Rc<Node>>, } impl Node { pub fn new(id: usize) -> Self { Self { id, downstream: None, } } pub fn update_downstream(&mut self, do…
skyline problem 今天leetcode的每日一题,感觉是一道很不错的题,所以拿出来分享一下 题目链接 还有一篇讲的不错的文章 链接 这种问题的解法总是一步一步迭代出来的,这里我打算讲一种思路,三个实现方法 首先我们可以考虑一种很暴力的解法,就是从左到右枚举每一个横坐标(注意是离散化后的),然后枚举每一个矩形,判断能够包含这个横坐标的最大的矩形高度是多少,这样我们就可以确定这个关键点的纵坐标了 可以想到,我们枚举横坐标是一个必须的过程,因为我们最终要求出所有的关键点。但是我们不必每次都枚举所有的矩形,只…
pop的返回类型 这里说的是C++标准库中的stack和queue容器的pop成员函数 我们在平常的使用过程中就可以知道,这两个容器(或者叫容器适配器)的pop函数的返回值都是void,但是为什么标准库要这么设计这个接口呢? 或者问,为什么返回值不设置成容器中元素的类型呢? 对于多线程的情况,如果我们想取出pop的元素,就需要执行 stack.top 和 stack.pop 两步 如果我们的pop可以直接返回对应的元素,就不用担心我们的操作会被其他的线程干扰,因为我们的操作具有原子性 举个例子,假设我们有两个线程,…