【问题标题】:Is there a technical term for replacing an element in a vector with the last element of said vector?是否有用该向量的最后一个元素替换向量中的元素的技术术语?
【发布时间】:2011-10-04 22:24:21
【问题描述】:

我发现自己经常这样做,但我不知道该怎么称呼它。从概念上讲,至少对我来说,我正在从向量中删除一个元素,并且作为副作用,出于优化原因,向量的最后一个元素会取代它。

这个过程肯定有一个专有名称吗?请赐教,我不写RemoveElementAndReplaceWithLastItem方法。

【问题讨论】:

  • 出于好奇,您在哪些用例中反复这样做?
  • 如果我正在处理一组顺序无关紧要的元素。 IE。对于模拟中的对象,我关心每一步遍历每个对象一次,删除死对象。数据向量一般会提供更好的缓存一致性,RemoveElementAndReplaceWithLastItem 解决了中间擦除的低效问题。

标签: language-agnostic naming-conventions


【解决方案1】:

我不相信你正在做的事情有一个通用术语。但是对于您非常具体的用例,我建议根据您的意图而不是操作的作用来命名该函数。正如您所说,操作所做的是副作用,您真正要做的是从中间删除。

因此,我建议将函数命名为:fast_delete(或quick_remove,由您决定)。

然后在函数实现的注释中描述快速删除的机制:即用最后一个元素替换已删除的项目。您甚至应该提及您上面所说的为什么您认为这样做更快,并且该操作不能保证列表将保持与以前相同的顺序。

【讨论】:

  • 至于你自己和 James Mohler 在另一个答案中给出的两种相反的命名风格,我当然更喜欢你的。我无法决定我更喜欢哪个。 fast_delete 传达了优化的意图,而special_delete 将明确表示 something 正在发生。哦,好吧,这些细节并不是那么重要。我的实际问题的答案似乎是“可能不是?”。
【解决方案2】:

您的函数应该被称为以下之一:

  • ReplaceWithLast()

  • MoveLastTo()

  • ConvertQtoPQ()

如将队列转换为优先队列

【讨论】:

    【解决方案3】:

    您可以通过以下方式命名您的方法/函数:

    replaceInPlace: anElement
    

    或针对您的特定语言

    replaceInPlace(anElement)
    

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多