- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果您有键/值对(或键)的排序映射,一个明显的操作是获取第一对或最后一对(或键)。
C++ 的 std::vector
有 front()
和 back()
用于此目的。 std::map
不会,但是 *map.begin()
和 *map.rbegin()
(反向迭代器)可以解决这个问题(假设知道 map 不为空)。
在 Rust 中,获取映射的第一个元素似乎需要 map.iter().next().unwrap()
— 丑陋,但考虑到需要进行一些错误检查,这也许是合理的。
我们如何获取最后一个元素?通过遍历所有元素:map.iter().last().unwrap()
?
我看到有 Iterator::rev()
,所以 map.iter().rev().next().unwrap()
是一个合理的选择吗?
最佳答案
btree_map::Iter
,由 BTreeMap::iter()
返回,实现 DoubleEndedIterator
,所以确实,要么使用 rev()
的方法可行,要么 you can use the next_back()
method directly :
let (key, value) = map.iter().next_back().unwrap();
关于rust - 如何获取 BTreeMap 中的最后一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699076/
我试图理解两者之间的区别 let rows = Vec::new(); for (k, v) in my_btree { // BTreeMap rows.push((&k, &v)) //
此示例代码: use std::collections::BTreeMap; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, S
我可以将枚举转换为 TreeMap 吗? enum En1 { val1, val2, val3 } fn fn1() -> BTreeMap { let mut map = BTre
我正在使用 toml crate 来解析一个如下所示的 .toml 文件: config = { option = "?" } array = [ { key1 = value1, key2
刚开始(尝试)学习 Rust。如何使用“bytestrings”作为 std::collections::BTreeMap 中的键? 似乎我不能使用 [u8],因为该类型需要固定大小。 使用向量,例如
下面的两个代码块是等效的,但由于某种原因,我在第二个代码块上遇到了编译器错误。 我很难理解为什么 names在一个版本中借用,而不是在另一个版本中。 我试图弄清楚如何从不可变的 BTreeMap 中读
我正在使用霍夫曼编码在 Rust 中创建压缩/解压缩库。第一步是创建一个包含所有唯一字符和出现次数的数据结构。我从一个简单的文本文件开始,遇到与换行符“字符”相关的问题。 我第一次尝试解决这个问题是构
代码: #[derive(Debug)] struct Haha { data: i32, } use std::collections::BTreeMap; fn main() {
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我想从有序 集合中找到第一个大于限制的元素。虽然对其进行迭代始终是一种选择,但我需要一个更快的方法。目前,我想出了一个像this这样的解决方案。但感觉有点老套: use std::cmp::Order
我正在做一个锻炼练习,其中我需要反转拼字游戏分数的 map ;分数图 => 字母变成字母图 => 分数。我想出了以下 Rust 代码: use std::collections::BTreeMap;
如果您有键/值对(或键)的排序映射,一个明显的操作是获取第一对或最后一对(或键)。 C++ 的 std::vector有 front() 和 back() 用于此目的。 std::map不会,但是 *
我不确定这是否是一个新手问题。 rust 标准库 std::collections提供 map 和 set 的 B-tree 实现。 我查看了文档 here ,但我找不到用于实现的分支因子 m。 最佳
这个问题在这里已经有了答案: How to make a compiled Regexp a global variable? (1 个回答) Why can't const functions i
我想调用range在 BTreeMap 上,键是像 (a,b) 这样的元组.假设我们有: (1, 2) => "a" (1, 3) => "b" (1, 4) => "c" (2, 1) => "d"
我正在尝试从 BTreeMap 构建一个 RangeSet(其中键是下限,值是上限)。只要我只是在查找东西,这就很好用。然而,第一个变异方法让我难住了: 如果我想插入一个范围到我的集合,我需要检查我的
如果我对 B 树的理解正确,那么在对数时间内搜索 key 应该是容易且可能的。如果key不存在,返回下一个更小更大的key;给定键的邻居,如果它会被插入。 这个功能是否已经存在? 使用当前 API 的
此处来自 Python。 我想知道为什么 BTreeMap 是可散列的。我并不惊讶 Hashmap 不是,但我不明白为什么 BTreeMap 是。 例如,我可以这样做: let mut seen_co
此处来自 Python。 我想知道为什么 BTreeMap 是可散列的。我并不惊讶 Hashmap 不是,但我不明白为什么 BTreeMap 是。 例如,我可以这样做: let mut seen_co
use std::collections::btree_map::BTreeMap; fn main() { let mut map: BTreeMap; map.insert("na
我是一名优秀的程序员,十分优秀!