Rust 如何基于现有向量长度生成包含1到K的整数向量
Rust生成1到原向量长度的整数向量实现方法
最优实现(仅需调用原向量长度)
不需要遍历原向量,直接通过长度生成目标序列,性能最高:
// 你的原始向量 let original_vec = vec![val1, val2, val3, /* 剩余元素 */ valK]; // 获取原始向量长度K let k = original_vec.len(); // 生成1到K的整数向量 let target_vec: Vec<usize> = (1..=k).collect();
说明:1..=k是Rust 1.26版本后支持的闭区间迭代器语法,刚好覆盖1到K的所有整数,通过collect()方法直接转换为Vec类型,需显式指定目标Vec的元素类型。如果需要兼容更早版本的Rust,可替换为半开区间写法:(1..k+1).collect()
兼顾原向量遍历的实现
如果生成序列的同时需要处理原向量的元素,可结合enumerate方法实现:
let target_vec: Vec<usize> = original_vec .iter() .enumerate() .map(|(index, _element)| index + 1) .collect();
自定义整数类型
如果需要i32、i64等其他类型的整数序列,只需加一步类型转换即可:
// 生成元素为i32类型的目标向量 let target_vec: Vec<i32> = (1..=k).map(|num| num as i32).collect();
内容的提问来源于stack exchange,提问作者Ziva
相关产品推荐
相关产品推荐

