2014-10-17 3 views
-1

У меня есть смутное ощущение смысла этого термина, как правило, в контексте структур данных и алгоритмов, которые полагаются на переменные swap для передачи данных вокруг контейнеров, а что нет. Но я хотел бы услышать более богатые определения и нюансы для людей, знающих этот термин. Взяв на себя выстрел, я бы сказал, что сделал что-то на месте (интересное подзапрос, какие глаголы могут появиться раньше на месте? Перемещение на место? Перевод на место? Копирование на место?) - это перенос элементов данных контейнера из одного места памяти в другое без регресса на вторую копию всего контейнера.Что подразумевается под термином «inplace»

+0

Из того, что я собираю, он делает операцию над данными, не занимая больше места, чем то, что занято данными –

+1

http://en.wikipedia.org/wiki/In-place_algorithm? «алгоритм, который преобразует входные данные с использованием структуры данных с небольшим постоянным количеством дополнительного пространства для хранения. Вход обычно перезаписывается выходом по мере выполнения алгоритма». – Ian

ответ

1

«inplace» обычно означает «с дополнительным пространством O (1)».

0

Этот термин часто используется для обозначения альтернативы какой-либо операции, которая обычно включала бы какую-то операцию копирования. Альтернатива достигает тех же результатов, но избегает процедуры копирования или операции, в любом случае.

Один пример из C++. Перед версией C++ 11 на язык добавление элемента в контейнер не могло избежать какой-либо операции копирования, что может стать дорогостоящим, когда контейнер имеет нетривиальный объект.

Если в контейнер добавлен совершенно новый экземпляр класса, это был довольно упущенный вывод о том, что в конечном итоге происходит следующее: 1) построение экземпляра класса, 2) построение копии и 3) уничтожение первый случай.

В C++ 11 добавлены некоторые языковые функции, позволяющие избежать копирования, при этом новый экземпляр класса заканчивается получением «на месте» или «emplace» внутри контейнера.

Смежные вопросы