首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指针::swap() vs std::ptr::swap()

指针::swap() vs std::ptr::swap()
EN

Stack Overflow用户
提问于 2022-11-22 13:42:36
回答 1查看 39关注 0票数 -1

指针的方法swap()std::ptr::swap()有什么区别?

签名是相似的,它们的行为和我测试的一样。

代码语言:javascript
运行
复制
pub unsafe fn swap(self, with: *mut T)
代码语言:javascript
运行
复制
pub unsafe fn swap<T>(x: *mut T, y: *mut T)

至于std::mem::swap() (用于引用而不是指针),在这种情况下,我们不能调用std::mem::swap(),因为它需要两个可变的引用。例如,在这种情况下,我们将调用slice::swap()。那std::ptr::swap()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 13:48:13

ptr.swap()std::ptr::swap()之间没有什么区别-- 前者的实施只是调用后者:

代码语言:javascript
运行
复制
pub const unsafe fn swap(self, with: *mut T)
where
    T: Sized,
{
    // SAFETY: the caller must uphold the safety contract for `swap`.
    unsafe { swap(self, with) }
}

根据医生们mem::swapptr::swap之间唯一的区别是:

  • ptr::swap对指针而不是引用进行操作。
  • ptr::swap允许指向值重叠。
  • ptr::swap不要求对指向数据进行初始化/满足指向类型的要求。

除此之外,它们的语义是相同的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74533592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档