当前位置: 首页 > news >正文

虚拟主机搭建网站免费自己做网站

虚拟主机搭建网站,免费自己做网站,宁波住房和城乡建设网,淘宝网店代运营正规公司HashMap用法文档 文章目录 创建键的要求 增删改查增: insert删: remove/remove_entry改单点修改 get_mut整体修改 values_mut/iter_mut 查集增改于一身的entry 遍历只读遍历into_values() 与 into_keys()容量、实际长度、判空导出清除重定容量 use std::collections::HashMap;创…HashMap用法文档 文章目录 创建键的要求 增删改查增: insert删: remove/remove_entry改单点修改 get_mut整体修改 values_mut/iter_mut 查集增改于一身的entry 遍历只读遍历into_values() 与 into_keys()容量、实际长度、判空导出清除重定容量 use std::collections::HashMap;创建 // 最简单的写法 let mut my_map HashMap::new();// 写全了就是 ↓ let mut map: HashMapstr, i32 HashMap::new();// 规定初始容量 let mut map: HashMapstr, i32 HashMap::with_capacity(10);// 创建一个使用随机哈希器的 HashMap use std::hash::RandomState; let s RandomState::new(); let mut map HashMap::with_hasher(s);// 使用随机哈希器 并且规定初始容量 let mut map HashMap::with_capacity_and_hasher(10, s);键的要求 键需要实现 Eq 和 Hash 特征通常可以使用默认 #[derivePartial Eq Eq Hash] 如果您自己实现这些属性则以下属性必须成立 k1 k2 - hash(k1) hash(k2) 增删改查 增: insert 将键值对插入到映射中。 如果映射不存在此键则返回 None。 如果映射确实存在此键则更新该值并返回旧值。 my_map.insert(Daniel, 798-1364);删: remove/remove_entry map.remove(1) map.remove_entry(1); 返回Option若map中有key1的则返回Some((1, “a”), 否则返回None 改 单点修改 get_mut 返回对与 key 对应的值的可变引用。 键可以是映射的键类型的任何借用形式但借用形式的 Hash 和 Eq 必须与键类型的 Hash 和 Eq 匹配。 // if let 的用法返回None则 if语句中不执行不会报错 if let Some(x) map.get_mut(1) {*x b; }整体修改 values_mut/iter_mut for (_, val) in map.iter_mut() {*val * 2; }for val in map.values_mut() {*val *val 10; }思考为什么没有key_mut? 答因为hash map中的key不可改 查 assert_eq!(map.contains_key(1), true);// 返回bool类型 map.get_key_value(1); //返回Option(K, V)类型 map.get(1)// 返回OptionV类型集增改于一身的entry letters.entry(ch).and_modify(|counter| *counter 1).or_insert(1);解释 letters.entry(ch): letters 是一个 HashMap其中 entry 方法被调用。这个方法接受一个键在这个例子中是 ch并返回一个 Entry 类型的值代表映射中与该键关联的值的入口点。 Entry API 提供了一种方式来迭代、插入或修改映射中的值而不需要直接使用 get、insert 或 get_mut 方法。 .and_modify(|counter| *counter 1): and_modify 方法是一个在 Entry API 中使用的方法它用于修改已存在的值。如果键 ch 已经存在于映射中这个方法将被调用。 它接受一个闭包 |counter| *counter 1这个闭包接受一个可变引用 counter 到当前的计数值并递增这个值。这里 *counter 1 相当于 counter counter 1但使用了解引用操作符 * 来修改值。 .or_insert(1): or_insert 方法是 Entry API 的一部分用于处理键不存在的情况。如果 ch 不在映射中这个方法将被调用。 它接受一个值在这个例子中是 1并将这个值插入到映射中作为 ch 的值。如果 ch 已经存在这个方法不会做任何事情。 综合来看这行代码的作用是 如果 ch 已经作为键存在于 letters 映射中就将其对应的值增加 1。 如果 ch 不存在就在映射中插入 ch 作为键并将其值初始化为 1。 这种写法非常适合于计数场景如统计字符出现的次数因为它简洁地处理了值的更新和插入。 遍历 只读遍历 // 遍历key for key in map.keys() {println!({key}); }// 遍历value for val in map.values() {println!({val}); }// 遍历键值对 for (key, val) in map.iter() {println!(key: {key} val: {val}); } into_values() 与 into_keys() // 可改但执行完map就没了它的所有值已经被移动到迭代器中。开销大一般不这么用。 // value拥有所有权 for value in map.into_values() {println!({}, value); }// 常见用法效果是把所有的val/key放入Vec中。 let mut vec: Veci32 map.into_values().collect(); let mut vec: Vecstr map.into_keys().collect();vec.sort_unstable(); //排序注意遍历的复杂度是O(capacity),而非O(len) 容量、实际长度、判空 assert!(map.capacity() 100); assert_eq!(a.len(), 0); assert!(!a.is_empty());导出 for (k, v) in a.drain().take(1) {assert!(k 1 || k 2);assert!(v a || v b); }清除 map.clear();重定容量 // 容量至少增加10 map.reserve(10);// 尝试容量至少增加10 map.try_reserve(10).expect(why is the test harness OOMing on a handful of bytes?);// 缩小容量至合适大小 map.shrink_to_fit();// 缩小至如果参数比len还小则该句话被忽略 map.shrink_to(10);
http://www.sczhlp.com/news/186185/

相关文章:

  • 百度怎么验证网站门户网站建设运营
  • 平昌网站建设重庆哪家公司做网站好
  • dede响应式网站模板下载app应用公司
  • 新乡市网站建设龙华做棋牌网站建设
  • 哪些网站可以做代理青岛做网站公司排名
  • 济南富新网站建设大型科技网站建设
  • 二手书网站开发设计做采购应该关注的网站
  • 网站域名如何查询深圳电商app开发定制外包
  • asp.net做网站源代码织梦做信息类网站
  • 网站设计工程师培训公司注册资金最新规定2024
  • 一流的网站建设与优化纳森网络做网站多少钱
  • 网站运营方案书wordpress的feed
  • 网站开发与编程简述网站的建设流程
  • 中企动力做的 石子厂网站软件应用商店下载安装
  • 外贸网站制作哪家快河南省郑州市金水区
  • 东铁匠营网站建设杭州外贸建站公司
  • 网站后台管理系统制作教程重庆seo网络优化师
  • 河南建设监理协会网站电话如何给别人做网站赚钱
  • 如何创建网站的第一步做网站的书籍
  • 建设企业功能网站新媒体运营怎么自学
  • 易书网上书城网站建设方案北京网页设计公司兴田德润专业
  • 某个网站做拍卖预展的好处广州软件开发工程师工资
  • 美妆购物网站开发的总结网易企业邮箱1
  • 谈程序员如何做好业务
  • 面向对象的题目
  • P11229 [CSP-J 2024] 小木棍题解
  • 10.12~10.18随笔
  • 百度商桥代码怎么加到网站上网站还是app
  • 合肥专业商业网站现在做网络推广网站建设怎么样
  • 推荐网站制作公司wordpress引用php