![]() |
![]() ![]() ![]() ![]() |
![]() |
ErasureBoost , Chapter 1. Boost.Icl , Function Reference
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сокровище |
интервал |
интервал |
элемента |
элемент |
|---|---|---|---|---|
|
| ei | |||
| ||||
|
| 1 | 1 | 1 | 1 |
|
| 1 | 1 | 1 | 1 |
Эффекты излучение реализовано erase и >извлечение реализовано subtract и оператор -= идентичны для всех Set-types icl.
Для Map-types, erase предоставляет stl семантику стирания в отличие от subtract и operator -=, которые осуществляют обобщенную вычитку, которая выполняет инверсные агрегации, если ключевые значения сталкиваются или ключевые интервалы.
Используя итераторы, можно стереть объекты или диапазоны объектов, на которые указывает итератор из icl Sets и Maps.
/* overload table for */ T\P| e i b p T& T::erase(const P&) ---+-------- T& erase(T&, const P&) s | s m | m S | S S M | M M
Следующая таблица содержит характеристики сложности для функции erase на элементах и сегментах.
Table 1.31. Time Complexity for erasure of elements and segments on icl containers
|
|
домен |
интервал |
домен |
интервал |
|---|---|---|---|---|
|
O(log n) | ||||
|
O(log n) |
O(log n) | |||
|
O(log n) |
amortized | |||
|
O(log n) |
O(n) |
O(log n) |
O(n) |
Как показано в таблицах перегрузки для функции inplace erase ниже, доступно больше комбинаций типа для erasure, чем для insertion.
// overload tables for function element containers: interval containers: T& erase(T&, const P&) T\P| e b s m T\P| e i b p S M ---+-------- ---+------------ s | s s S | S S S m | m m m m M | M M M M M M
Мы можем разделить эти перегрузки на две группы. Первая группа может называться обратная вставка.
/* (1) Reverse insertion */ T\P| e b s m T\P| e i b p S M ---+-------- ---+------------ s | s s S | S S S m | m m M | M M M
The second group can be viewed as an erasure by key objects
/* (2) Erasure by key objects */ T\P| e b s m T\P| e i b p S M ---+-------- ---+------------ s | s s S | S S S m | m m M | M M M
На картах обратный ввод (1) отличается от stl's стирать семантику, потому что пары значений удаляются только, если найден ключ и данные. Только излучение по ключевым объектам (2) работает, как функция стирания на stl's std::maps, которая проходит ключевая стоимость> в качестве аргумента.
На Sets обе функциональные группы объединяются как распределение .
Характеристики сложности для операций по удалению на месте приведены следующими таблицами, где
n = iterative_size(y); m = iterative_size(x); //if P is a container type
Table 1.33. Time Complexity for inplace erasure on interval containers
|
|
домен |
интервал |
домен |
интервал |
интервал |
интервал |
|---|---|---|---|---|---|---|
|
interval_sets |
O(log n) |
amortized | O(m log(n+m)) | |||
интервал_карты |
O(log n) |
amortized |
O(log n) |
O(n) | O(m log(n+m)) | O(m log(n+m)) |
В следующей таблице показаны контейнеры icl, которые стираются с итераторами. Эраза на итераторах стирает всегда один значение значение_type для итератора, указывающего на него. Мы стираем
std::setsicl::mapsinterval_sets иinterval_maps|
Сокровища у итераторов |
интервал |
интервал |
элемента |
элемент |
|---|---|---|---|---|
void T::erase(iterator
pos) | амортизированный O(1) | амортизированный O(1) | амортизированный O(1) | амортизированный O(1) |
|
O(k) |
O(k) |
O(k) |
O(k) |
Erasing by a single iterator need only amortized permanent time. [первый, паст] имеет линейное время в количестве к етераторов в диапазоне [первый, паста>>>>>>>>>>>>>>>>><55>>>>>>>>>>>>>>>>>>>>>>>>>>>><555>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><5555>>>>>>>>>>>.
См. также . .
| [ORIG_BEGIN] [ORIG_END] --> |
| <>Subtraction [ORIG_END] --> |
Back to section . . .
| [ORIG_BEGIN] [ORIG_END] --> |
Статья Erasure раздела Chapter 1. Boost.Icl Function Reference может быть полезна для разработчиков на c++ и boost.
:: Главная :: Function Reference ::
реклама |