【发布时间】:2020-08-22 20:39:56
【问题描述】:
我正在学习Rust,但我找不到这个问题的答案。
在 PHP 中,有 array_column 方法,它是这样工作的:
给定一个数组数组(这将是 Rust 中的向量向量):
$records = [
[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3]
];
如果我想获得一个包含内部数组的所有第一个元素(“列”)的数组,我可以这样做:
$column = array_column($records, 0);
这样,例如,我得到[1,1,1,1]。如果我将 0 更改为 1,我会得到 [2,2,2,2] 等等。
由于 Rust 中没有 array_column 等效项(即:我找不到它),用向量向量实现类似行为的最佳方法是什么?
【问题讨论】:
-
我假设 PHP 对内存没有任何魔力,因为子数组可能放置在内存的不同部分。所以只需创建一个容量为
records大小的新向量,然后迭代外部向量中的每个元素,并在结果中添加一个subvector[k]元素。您还应该检查每个subvector的大小是否大于 k -
@AlexLarionov:感谢您的评论!基本上,你的解决方案就是我的解决方案,但当我发现你可以做这样的事情时,我想我错过了一些大事:
let zipped: Vec<_> = a.iter().zip(b.iter()).collect();(这只适用于 2 个向量,对我来说还不够)。不知道PHP底层是做什么的,但是array_column的实现确实很快
标签: rust array-column