pointers - 如何使用指针算法获取向量中元素的索引?

标签 pointers vector rust

在 C 中,您可以使用指针偏移量来获取数组中元素的索引,例如:

index = element_pointer - &vector[0];

给定对数组中元素的引用,这在 Rust 中也应该是可能的。

虽然 Rust 能够从向量元素获取内存地址,将它们转换为 usize,然后减去它们 - 在 Rust 中是否有更方便/惯用的方法来执行此操作?

最佳答案

没有更简单的方法。我认为原因是很难保证给你答案的任何操作或方法只允许你将它与 Vec (或更可能的切片)和该集合中的某些东西一起使用; Rust 不允许您使用对不同向量的引用来调用它。

更惯用的做法是首先避免需要这样做。由于生命周期的缘故,您不能将引用存储到 Vec 中非常永久远离 Vec 的任何地方,因此当您获得无论如何引用。

特别是,例如,在迭代时,您会使用 enumerate遍历对 (index, &item)

关于pointers - 如何使用指针算法获取向量中元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219667/

相关文章:

c - 将数组分配给具有复杂情况的指针

c++ - 如何在 C++ 中声明 vector ?

rust - "cycle detected when computing the supertrait"怎么解决?

rust - 我可以用迭代器做到这一点吗?

c++ - 这是通过指针从 uint8_t vector 加载对象的安全方法吗?

c - 数组等于另一个数组

c - 从不兼容的指针类型 C 赋值

c++ - 如何正确删除多维 vector ?

java - 如何检查 java 中 vector 中是否有用户定义的条目?

pointers - 为什么打印指针与打印取消引用的指针打印相同的内容?