vector - 如何打印 Vec 中每个元素的索引和值?
问题描述
我正在尝试完成此页面底部的活动,我需要打印每个元素的索引以及值。我从代码开始
use std::fmt; // Import the `fmt` module.
// Define a structure named `List` containing a `Vec`.
struct List(Vec<i32>);
impl fmt::Display for List {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
// Extract the value using tuple indexing
// and create a reference to `vec`.
let vec = &self.0;
write!(f, "[")?;
// Iterate over `vec` in `v` while enumerating the iteration
// count in `count`.
for (count, v) in vec.iter().enumerate() {
// For every element except the first, add a comma.
// Use the ? operator, or try!, to return on errors.
if count != 0 { write!(f, ", ")?; }
write!(f, "{}", v)?;
}
// Close the opened bracket and return a fmt::Result value
write!(f, "]")
}
}
fn main() {
let v = List(vec![1, 2, 3]);
println!("{}", v);
}
我是编码新手,我正在通过阅读 Rust 文档和 Rust by Example 来学习 Rust。我完全坚持这一点。
解决方案
在书中你可以看到这一行:
for (count, v) in vec.iter().enumerate()
如果您查看文档,您可以看到很多有用的函数Iterator
和enumerate
的描述状态:
创建一个迭代器,它给出当前迭代计数以及下一个值。
返回的迭代器产生对
(i, val)
,其中 i 是迭代的当前索引,val 是迭代器返回的值。
enumerate()
将其计数为usize
. 如果您想按不同大小的整数进行计数,zip 函数提供了类似的功能。
有了这个,你就有了向量中每个元素的索引。做你想做的事情的简单方法是使用count
:
write!(f, "{}: {}", count, v)?;
推荐阅读
- c++ - 使用 C++ 的递归线程使资源暂时不可用
- zend-framework - 带有可选参数的 Zend Expressive Route
- java - 如何正确覆盖学生类的equals方法,以便HashSet可以区分学生类的重复对象
- php - 如何修复接口类上 PHPDoc 的错误
- python - 如何将 dict 值分组到单个数组中以绘制它
- jquery - 使用 bootstrap3 在内容选项卡和导航选项卡上切换活动状态
- php - Youtube 数据 PHP API - 服务错误“无效凭据”
- c# - 在 asp.net 中显示时,阿拉伯字体未应用于水晶报表查看器?
- android - StrictMode:如何在 Android 中为 targetSdk >= 28 禁用“检测到未标记的套接字”
- c# - C# 将 Func 方法签名转换为新的 Func 方法签名