【问题标题】:What is meant by the term "inplace" [closed]“就地”一词是什么意思[关闭]
【发布时间】:2014-12-13 14:57:23
【问题描述】:

我对这个术语的含义有一种模糊的感觉,通常是在数据结构和算法的上下文中,这些数据结构和算法恰好依赖于交换变量来在容器周围传输数据等等。但我想听听一些更丰富的定义和人们对这个术语的了解的细微差别。自己试一试我会说在原地做某事(有趣的子问题,什么动词可以在原地之前出现?移动原地?转移原地?复制原地?)是将容器数据的元素从一个内存位置传输到另一个内存位置而无需追索到整个容器的第二个副本。

【问题讨论】:

  • 据我所知,它正在对数据进行操作,但使用的空间不超过数据所占用的空间
  • en.wikipedia.org/wiki/In-place_algorithm ? “一种算法,它使用具有少量、恒定数量的额外存储空间的数据结构来转换输入。输入通常在算法执行时被输出覆盖。”

标签: terminology


【解决方案1】:

“就地”通常表示“有 O(1) 额外空间”。

【讨论】:

    【解决方案2】:

    该术语通常用于表示通常涉及某种复制操作的某些操作的替代方法。替代方案实现了相同的结果,但避免了复制过程或操作,无论情况如何。

    一个例子来自 C++。在该语言的 C++11 修订版之前,向容器添加元素无法避免某种类型的复制操作,当容器具有非平凡对象时,这可能会变得昂贵。

    如果要将一个全新的类实例添加到容器中,那么最终发生的情况几乎已成定局:1) 类实例构造,2) 复制构造,以及 3) 第一个实例的销毁实例。

    C++11 添加了某些语言功能,可以避免复制,新的类实例最终会在容器内“就地”构造或“安放”。

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 2014-12-05
      • 2010-11-10
      • 2010-12-29
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      相关资源
      最近更新 更多