欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Rust 学习笔记:关于 HashMap 的练习题

Rust 学习笔记:关于 HashMap 的练习题

2025/5/18 5:42:27 来源:https://blog.csdn.net/ProgramNovice/article/details/148034095  浏览:    关键词:Rust 学习笔记:关于 HashMap 的练习题

Rust 学习笔记:关于 HashMap 的练习题

  • Rust 学习笔记:关于 HashMap 的练习题
    • 以下代码能否通过编译?若能,输出是?
    • 以下代码能否通过编译?若能,输出是?

Rust 学习笔记:关于 HashMap 的练习题

以下代码能否通过编译?若能,输出是?

use std::collections::HashMap;fn main() {let mut h = HashMap::new();h.insert("k1", 0);let v1 = &h["k1"];h.insert("k2", 1);let v2 = &h["k2"];println!("{} {}", v1, v2);
}

不能通过编译。v1 持有了不可变引用导致第二次 insert 报错。

insert() 是对 HashMap 的可变借用,而 &[] 是对 HashMap 的不可变借用,如果两个借用的作用域有交叠的话就可能引发潜在的内存安全问题。

以下代码能否通过编译?若能,输出是?

use std::collections::HashMap;fn main() {let mut h: HashMap<char, Vec<usize>> = HashMap::new();for (i, c ) in "hello!".chars().enumerate() {h.entry(c).or_insert(Vec::new()).push(i);}let mut sum = 0;for i in h.get(&'l').unwrap() {sum += *i;}println!("{}", sum);
}

可以通过编译。输出 5。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词