Существует ли технический термин для замены элемента в векторе последним элементом указанного вектора?

#language-agnostic #naming-conventions

#не зависящий от языка #соглашения об именовании

Вопрос:

Я достаточно часто это делаю, но я не знаю, как это назвать. Концептуально, по крайней мере для меня, я удаляю элемент из вектора, и в качестве побочного эффекта, по соображениям оптимизации, последний элемент вектора занимает его место.

Конечно, у этой процедуры есть правильное имя? Пожалуйста, просветите меня, чтобы я не писал RemoveElementAndReplaceWithLastItem метод.

Комментарии:

1. Из любопытства, в каких случаях использования вы делаете это снова и снова?

2. Если я обрабатываю набор элементов, порядок которых не имеет значения. Т.Е. Для объектов в симуляции я забочусь о том, чтобы проходить через каждый объект один раз за шаг, удаляя мертвые. Векторы данных обычно обеспечивают лучшую согласованность кэша, а RemoveElementAndReplaceWithLastItem решает проблему неэффективности стирания в середине.

Ответ №1:

Я не верю, что существует общий термин для того, что вы делаете. Но для вашего очень конкретного варианта использования я бы предложил назвать функцию на основе вашего намерения, а не того, что делает операция. Как вы сказали, то, что делает операция, является побочным эффектом, то, что вы действительно делаете, — это удаление из середины.

Поэтому я бы предложил назвать функцию: fast_delete (или quick_remove , на ваше усмотрение).

Затем в комментарии к реализации функции вы описываете механизм быстрого удаления: который заменяет удаленный элемент последним элементом. Вы должны даже упомянуть то, что вы сказали выше о том, почему, по вашему мнению, делать это таким образом быстрее и что операция не гарантирует, что список останется в том же порядке, что и раньше.

Комментарии:

1. Что касается двух противоположных стилей именования, данных вами и Джеймсом Молером в другом ответе, я, конечно, предпочитаю ваш. Я не могу решить, что мне нравится больше. fast_delete передает намерение оптимизации, в то время special_delete как было бы совершенно ясно, что что- то происходит. Ну что ж, такие детали не так важны. Ответ на мой актуальный вопрос, похоже, «вероятно, нет?».

Ответ №2:

Ваша функция должна вызываться одним из следующих:

  • ReplaceWithLast()

  • MoveLastTo()

  • ConvertQtoPQ()

Как в convert Queue в PriorityQueue

Ответ №3:

Вы можете назвать свой метод / функцию следующим образом:

 replaceInPlace: anElement
  

или для вашего конкретного языка

 replaceInPlace(anElement)