Rust Collections

Table of Contents

1. Rust Collections

1.1. Vec

1.1.1. 访问数据

  • &v[0] 返回一个引用
  • v[0] 返回一个 copy
  • &v[1..3] 返回一个 slice
  • v.as_slice() 返回一个 slice
  • v.first(), v.last(), v.get(index) 返回 Option<&T>
  • v.first_mut(), v.last_mut(), v.get_mut(index) 返回 Option<&mut T>
  • slice.to_vec() / slice.to_owned() 生成一个 vec

1.1.2. iteration

  • v.into_iter()
  • v.iter()
  • v.iter_mut()
  • iter.collect::<Vec<i32>>()

1.1.3. 基本操作

  • vec![0;10]
  • v.push(T)
  • v.pop() -> Option<T>
  • v.len()
  • v.is_empty()
  • v.insert()
  • v.remove(index)
  • v.resize(len,value)
  • v.truncate(len)
  • v.clear()
  • v.extend()
  • v.drain()
  • v.retain()
  • v.dedup()
  • v.swap()
  • v.swap_remove()

1.1.4. split

  • v.split_at()
  • v.split()
  • v.chunks()
  • v.windows()
  • v.join()

1.1.5. sort

  • v.sort()
  • v.sort_by()
  • v.sort_by_key()
  • v.reverse()

1.1.6. compare

  • v1 == v2
  • v1 > v2
  • v1.starts_with(v2)
  • v1.ends_with(v2)

1.2. VecDeq

  • v.push_front()
  • v.pop_front()
  • v.push_back()
  • v.pop_back()
  • v.front()
  • v.back()
  • v.front_mut()
  • v.back_mut()
  • v.from(vec![1,2,3])

1.3. BinaryHeap

  • q.from(vec![1,2,3])
  • q.push()
  • q.pop()
  • q.peek() -> Option<&T>

1.4. HashMap

1.4.1. 基本操作

  • iter.collect::<HashMap<i32,i32>>(), 其中 iter 是 (k,v) 的 iterator
  • map.contains_key(&K)
  • map.get(&K) -> Option<&V>
  • map.get_mut(&K)
  • &map[&K]
  • map.insert(k,v)
  • map.extend()
  • map.remove(&K)
  • map.retain(fn)
  • map.entry(k).or_insert(v)
  • map.entry(k).or_default()
  • map.entry(k).or_insert_with(fn)

1.4.2. iterator

  • for (k,v) in map
  • for (k,v) in map.iter()
  • map.keys()
  • map.values()
  • map.values_mut()

1.5. BTreeMap

  • map.range(1..4)
  • map.range_mut(1..4)

1.6. HashSet

1.6.1. 基本操作

  • iter.collect::<HashSet<i32>>()
  • set.contains()
  • set.insert()
  • set.remove()

1.6.2. set

  • set1.intersaction(&set2)
  • &set1 & &set2
  • set1.union(&set2)
  • &set | & set2
  • set1.difference(&set2)
  • &set1 - &set2
  • set1.symmetric_difference(&set2)
  • &set ^ &set2
  • set1.is_disjoint(&set2)
  • set1.is_subset(&set2)
  • set1.is_superset(&set2)
  • set1 == set2
  • set1 != set2

1.7. BTreeSet

  • set.range(1..4)

Author: [email protected]
Date: 2018-12-28 Fri 00:00
Last updated: 2024-08-05 Mon 17:57

知识共享许可协议