![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template circular_buffer_space_optimizedBoost , The Boost C++ Libraries BoostBook Documentation Subset , Boost.Circular_buffer C++ Reference
|
![]() | Предупреждение |
---|---|
Со времени версии 1.36 Boost поведение этого конструктора изменилось. Теперь он создает круглый буфер с нулевой емкостью. |
Параметры: |
explicitcircular_buffer_space_optimized(capacity_typecapacity_ctrl, constallocator_type&alloc=allocator_type());>Создать пустое пространство оптимизированного кругового буфера с заданной емкостью. Сложность. Константа.
circular_buffer_space_optimized(capacity_typecapacity_ctrl, param_value_typeitem, constallocator_type&alloc=allocator_type());>Создать полный пространственный оптимизированный круговой буфер с заданной емкостью, заполненный< capacity_ctrl.capacity() >копиями<item >.Сложность. Линейный [в< Параметры:
Последующие условия: < Бросок: Ошибка распределения, если память исчерпана (< | std::bad_alloc >, если используется стандартный распределитель).<T::T(const T&) >бросков. |
circular_buffer_space_optimized(capacity_typecapacity_ctrl,size_typen, param_value_typeitem, constallocator_type&alloc=allocator_type());>Создать пространственный оптимизированный круговой буфер с заданной емкостью, заполненный<
n
>копиями<item
>Сложность. Линейный [в<n
>.
| ||||||||
Требуется: | < | |||||||
Последующие условия: | < | |||||||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель).<T::T(const T&) >бросок. |
circular_buffer_space_optimized(constcircular_buffer_space_optimized<T,Alloc>&cb);>Конструктор копий.
Создает копию указанного<
.circular_buffer_space_optimized
>
Сложность. Линейный [в размере<cb
>.
<cb > | < подлежит копированию. |
<*this == cb
>
Количество выделенной памяти во внутреннем буфере составляет<cb.size()
>.
Броски:
std::bad_alloc
>, если используется стандартный распределитель).<T::T(const T&)
>бросок.circular_buffer_space_optimized(circular_buffer_space_optimized<T,Alloc>&&cb)noexcept;>Конструктор движения.
Перемещение конструирует<
из<circular_buffer_space_optimized
>cb
>, оставляя<cb
>пустым.
Константа.
Параметры: |
| ||
Требуется: | Компилятор C++ с поддержкой ссылок на rvalue. | ||
< | |||
Броски: | Ничего. |
template<typenameInputIterator> circular_buffer_space_optimized(InputIteratorfirst,InputIteratorlast, constallocator_type&alloc=allocator_type());>Создать полный пространственный оптимизированный круговой буфер, заполненный копией диапазона.
Сложность. Линейный (в<std::distance(first, last)
>.
Параметры: |
| ||||||
Требования: | Реальный диапазон< | ||||||
Пост-условия: | < | ||||||
Броски: | Ошибка распределения, если память исчерпана<std::bad_alloc >, если используется стандартный распределитель.<T::T(const T&) >бросок или ничего, если<T::T(T&&) >не является исключением и<InputIterator >является итератором движения. |
template<typenameInputIterator> circular_buffer_space_optimized(capacity_typecapacity_ctrl, InputIteratorfirst,InputIteratorlast, constallocator_type&alloc=allocator_type());>Создать пространственный оптимизированный круговой буфер с заданной емкостью (и минимальным гарантированным количеством выделенной памяти), заполненный копией диапазона.
Сложность. Линейный (в<std::distance(first, last)
>; в<min[capacity_ctrl.capacity(), std::distance(first, last)]
>, если<InputIterator
>являетсяRandomAccessIterator.
Параметры:
< | |
< | Контроллер емкости, представляющий максимальное количество элементов, которые могут храниться в< |
< | Начало диапазона должно быть скопировано. |
< | Конец диапазона должен быть скопирован. |
Требуется:
Действительный диапазон<[first, last)
>.
<first
>и<last
>должны соответствовать требованиямИтератор ввода.
<capacity() == capacity_ctrl && size() <= std::distance(first, last) && (*this)[0]== (last - capacity_ctrl.capacity()) && (*this)[1] == *(last - capacity_ctrl.capacity() + 1) && ... && (*this)[capacity_ctrl.capacity() - 1] == *(last - 1)
>
Если число предметов, подлежащих копированию из диапазона<[first, last)
>, больше указанного<capacity_ctrl.capacity()
>, то копируются только элементы из диапазона<[last - capacity_ctrl.capacity(), last)
>.
Количество выделенной памяти во внутреннем буфере<max[capacity_ctrl.min_capacity(), min[capacity_ctrl.capacity(), std::distance(first, last)]]
>.
Броски:
std::bad_alloc
>, если используется стандартный распределитель.<T::T(const T&)
>бросокcircular_buffer_space_optimized<T,Alloc>& operator=(constcircular_buffer_space_optimized<T,Alloc>&cb);>Правообладатель.
Делает это<
копией указанного<circular_buffer_space_optimized
>
.circular_buffer_space_optimized
>
Безопасность исключения. Сильный.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на это<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<cb
>.
См. также:
<assign(size_type, const_reference)
>,<assign(capacity_type, size_type, const_reference)
>,<assign(InputIterator, InputIterator)
>,<assign(capacity_type, InputIterator, InputIterator)
>
Параметры:
<cb > | < |
Последующие условия:
<*this == cb
>
Количество выделенной памяти во внутреннем буфере составляет<cb.size()
>.
Броски:
std::bad_alloc
>, если используется стандартный распределитель).<T::T(const T&)
>бросков.circular_buffer_space_optimized<T,Alloc>& operator=(circular_buffer_space_optimized<T,Alloc>&&cb)noexcept;>Перемещение присваивает содержание<
cb
><*this
>, оставляя<cb
>пустым.Сложность. Константа.
Параметры: |
< | < |
Требуется:
Компилятор C++ с поддержкой ссылок на rvalue.
Последующие условия:
<cb.empty()
>
Броски:
circular_buffer_space_optimized
public member functionsboolfull()constnoexcept;>Полно ли<
circular_buffer_space_optimized
>
?Безопасность в отношении исключений. Без броска.
Инвалидация итератора. Не делает недействительными никакие итераторы.
Сложность. Константа (в размере<
.circular_buffer_space_optimized
>
См. также:
Возвращает: | < | |
Бросает: | Ничего. |
size_typereserve()constnoexcept;>Получить максимальное количество элементов, которые могут быть вставлены в<
circular_buffer_space_optimized
>
без перезаписи каких-либо из уже сохраненных элементов.Безопасность в отношении исключений. Без броска.
Инвалидация итератора. Не отменяет итераторов.
Сложность. Константа [в размере<
.circular_buffer_space_optimized
>
См. также:
<capacity()
>,<size()
>,<max_size()
>
Возвращение: | < |
Броски: | Ничего. |
constcapacity_type&capacity()constnoexcept;>Получить емкость<
circular_buffer_space_optimized
>
.Безопасность исключения. Без броска.
Итератор Инвалидация. Не отменяет итераторов.
Сложность. Константа (в размере<
.circular_buffer_space_optimized
>
См. также:
<reserve()
>,<size()
>,<max_size()
>,<set_capacity(const capacity_type&)
>
Возвращение:
Контроллер емкости, представляющий максимальное количество элементов, которые могут храниться в<circular_buffer_space_optimized
>и минимальный выделенный размер внутреннего буфера.
Броски:
voidset_capacity(constcapacity_type&capacity_ctrl);>Изменить емкость (и минимальное гарантированное количество выделенной памяти)<
circular_buffer_space_optimized
>
.Безопасность исключения. Сильный.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный<min[size(), capacity_ctrl.capacity()]
>.
Чтобы явно очистить дополнительно выделенную память, используйте техникутермоусадка в соответствие:Примечание
<boost::circular_buffer_space_optimized<int> cb(1000);
>
...
boost::circular_buffer_space_optimized<int>(cb).swap(cb);
Для получения дополнительной информации о технике термоусадки в STL см.http://www.gotw.ca/gotw/054.htm.
См. также:
<rset_capacity(const capacity_type&)
>,<resize(size_type, const_reference)
>
Параметры: |
| ||
Последующие условия: | < | ||
Броски: | Ошибка распределения, если память исчерпана,<std::bad_alloc >, если используется стандартный распределитель. Что бы ни бросало<T::T(const T&) >, если<T::T(T&&) >не является исключением |
voidresize(size_typenew_size,param_value_typeitem=value_type());>Изменить размер<
circular_buffer_space_optimized
>
.Безопасность в отношении исключений.
Инвалидация итераторов. Инвалидирует все итераторы, указывающие на<
[за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный
См. также: < Новый размер. Пост-условия: < Броски:Элемент<
будет заполнен, чтобы получить требуемый размер. [См.Эффект.]circular_buffer_space_optimized
>new_size
>size() == new_size && capacity().capacity() >= new_size
>
Если новый размер больше текущего, то копии<item
>будут вставлены вобратно<circular_buffer_space_optimized
>для достижения желаемого размера. В случае, если результирующий размер превышает текущую мощность, мощность будет установлена на<new_size
>.
Если текущее число элементов, хранящихся в<circular_buffer_space_optimized
>, больше желаемого нового размера, то число<[size() - new_size]
>последнихэлементов будет удалено. (Вместимость останется неизменной.)
Количество выделенной памяти во внутреннем буфере может быть размещено по мере необходимости.Ошибка распределения, если память исчерпана (1534) при использовании стандартного распределителя. Что бы ни бросил< T::T(const T&)
>.
voidrset_capacity(constcapacity_type&capacity_ctrl);>Изменить емкость (и минимальное гарантированное количество выделенной памяти)<
circular_buffer_space_optimized
>
.Безопасность исключения. Сильная.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность.ږ]
См. также:
<set_capacity(const capacity_type&)
>,<rresize(size_type, const_reference)
>
Параметры: |
|
Последующие условия: | < |
Бросок: | Ошибка распределения, если память исчерпана (1678) при использовании стандартного распределителя. Все, что<T::T(const T&) >бросает или ничего, если<T::T(T&&) >не является исключением |
voidrresize(size_typenew_size,param_value_typeitem=value_type());>Изменить размер<
circular_buffer_space_optimized
>
.Безопасность исключения. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в новом размере<
.circular_buffer_space_optimized
>
См. также:
<resize(size_type, const_reference)
>,<rset_capacity(const capacity_type&)
>
Параметры: |
|
Последующие условия: | < |
Броски: | Ошибка распределения, если память исчерпана<std::bad_alloc >, если используется стандартный распределитель. Что бы ни бросил<T::T(const T&) >. |
voidassign(size_typen,param_value_typeitem);>Назначение<
n
>предметов в пространстве оптимизированного кругового буфера.Содержание<
будет удалено и заменено<circular_buffer_space_optimized
>n
>копиями<item
>.
Безопасность исключения. Основы.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в<n
>.
См. также:
<operator=
>,<assign(capacity_type, size_type, const_reference)
>,<assign(InputIterator, InputIterator)
>,<assign(capacity_type, InputIterator, InputIterator)
>
Параметры:
< | Элемент< |
< | Количество элементов< |
Последующие условия:
<capacity().capacity() == n && capacity().min_capacity() == 0 && size() == n && (*this)[0] == item && (*this)[1] == item && ... && (*this) [n - 1] == item
>
Количество выделенной памяти во внутреннем буфере<n
>.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бы ни бросил<T::T(const T&)
>.voidassign(capacity_typecapacity_ctrl,size_typen,param_value_typeitem);>Назначение<
n
>элементов в пространстве оптимизированного кругового буфера с указанием емкости.Мощность<
будет установлена на указанное значение и содержание<circular_buffer_space_optimized
>
будет удален и заменен<circular_buffer_space_optimized
>n
>копиями<item
>.
Безопасность исключения. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. ]Линейный [в<n
>.
См. также:
<operator=
>,<assign(size_type, const_reference)
>,<assign(InputIterator, InputIterator)
>,<assign(capacity_type, InputIterator, InputIterator)
>
< | Элемент< |
< | Число элементов< |
Требуется:
<capacity_ctrl.capacity() >= n
>
Постусловия:
<capacity() == capacity_ctrl && size() == n && (*this)[0] == item && (*this)[1] == item && ... && (*this) [n - 1] == item
>
Количество выделенной памяти будет<max[n, capacity_ctrl.min_capacity()]
>.
Броски:
std::bad_alloc
>, если используется стандартный распределитель. Что бы ни бросил<T::T(const T&)
>.template<typenameInputIterator> voidassign(InputIteratorfirst,InputIteratorlast);>Назначить копию диапазона в пространстве оптимизированного кругового буфера.
Содержание<
будет удалено и заменено копиями элементов из указанного диапазона.circular_buffer_space_optimized
>
Безопасность исключения. Базовый.
Итератор Инвалидация. Недействительны все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в<std::distance(first, last)
>.
См. также:
<operator=
>,<assign(size_type, const_reference)
>,<assign(capacity_type, size_type, const_reference)
>,<assign(capacity_type, InputIterator, InputIterator)
>
Параметры: |
| ||||
Требуется: | Действительный диапазон< | ||||
Последующие условия: | < | ||||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бы<T::T(const T&) >ни бросало, или ничего, если<T::T(T&&) >не является исключением и<InputIterator >является итератором движения. |
template<typenameInputIterator> voidassign(capacity_typecapacity_ctrl,InputIteratorfirst, InputIteratorlast);>Назначить копию диапазона в пространстве оптимизированного кругового буфера с указанием емкости.
Емкость<
будет установлена на указанное значение и содержание<circular_buffer_space_optimized
>
будет удалено и заменено копиями элементов из указанного диапазона.circular_buffer_space_optimized
>
Безопасность исключения. Базовая.
[23400]Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в<std::distance(first, last)
>; в<min[capacity_ctrl.capacity(), std::distance(first, last)]
>, если<InputIterator
>являетсяИтератор случайного доступа
См. также:
<operator=
><assign(size_type, const_reference)
>,<assign(capacity_type, size_type, const_reference)
>,<assign(InputIterator, InputIterator)
>
assign(capacity_type, size_type, const_reference)
>,<assign(InputIterator, InputIterator)
>[ Параметры:
< | Новый контроллер мощности. |
< | Начало диапазона для копирования. |
< | Конец диапазона для копирования. |
Требования:
Действительный диапазон<[first, last)
>.
<first
>и<last
>должны соответствовать требованиямИтератор ввода.
Последующие условия:
<capacity() == capacity_ctrl && size() <= std::distance(first, last) && (*this)[0]== *(last - capacity) && (*this)[1] == *(last - capacity + 1) && ... && (*this)[capacity - 1] == *(last - 1)
>
Если количество предметов, подлежащих копированию из диапазона<[first, last)
>, больше указанного<capacity
>, то копируются только элементы из диапазона<[last - capacity, last)
>.
Количество выделенной памяти во внутреннем буфере составляет<max[std::distance(first, last), capacity_ctrl.min_capacity()]
>.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бы ни бросало<T::T(const T&)
>или ничего, если<T::T(T&&)
>не является исключением и<InputIterator
>является итератором движения.voidswap(circular_buffer_space_optimized<T,Alloc>&cb)noexcept;>Измените содержание двух пространственно-оптимизированных круговых буферов.
Безопасность в отношении исключений. Без броска.
Инвалидация итератора. Инвалидирует все итераторы обоих<circular_buffer_space_optimized
>2559 контейнеров. (С другой стороны, итераторы по-прежнему указывают на те же элементы, но в другом контейнере. Если вы хотите полагаться на эту функцию, вы должны отключить поддержку __debug_, в противном случае утверждение сообщит об ошибке, если используется такой недействительный итератор.
Сложность. Постоянная [в размере<
.circular_buffer_space_optimized
>
См. также:
<swap(circular_buffer<T, Alloc>&, circular_buffer<T, Alloc>&)
>,<swap(circular_buffer_space_optimized<T, Alloc>&, circular_buffer_space_optimized<T, Alloc>&)
>
Постусловия:
<this
>содержат элементы<cb
>и наоборот; емкость и количество выделенной памяти во внутреннем буфере<this
>равны емкости и количеству выделенной памяти<cb
>и наоборот.
Броски:
voidpush_back(param_value_typeitem);>Вставить новый элемент в конце пространства оптимизированного кругового буфера.Безопасность исключения. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>
Сложность. Линейный [размер<circular_buffer_space_optimized
>
См. также:
<push_front(const_reference)
><pop_back()
>,<pop_front()
>
Параметры: |
| ||
Последующие условия: | , если< | ||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель).<T::T(const T&) >бросок |
voidpush_back(rvalue_typeitem);>Вставить новый элемент в конце пространства оптимизированного кругового буфера.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
См. также:
<push_front(const_reference)
>,<pop_back()
>,<pop_front()
>
Параметры: |
| ||
, если< | |||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). |
voidpush_back();>Вставить новый элемент в конце пространства оптимизированного кругового буфера.
Безопасность исключения. Основы.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
См. также:
<push_front(const_reference)
>,<pop_back()
>,<pop_front()
>
Последующие условия:
если<capacity().capacity() > 0
>то<back() == item
>
Если<circular_buffer_space_optimized
>заполнен, первый элемент будет удален. Если вместимость<0
>, ничего не будет вставлено.
Количество выделенной памяти во внутреннем буфере может быть прогнозируемо увеличено.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бы ни бросил<T::T()
>. 2883 или ничего, если 2884 не является исключением.voidpush_front(param_value_typeitem);>Включить новый элемент в начале пространственного оптимизированного кругового буфера.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (размер<
.circular_buffer_space_optimized
>
<push_back(const_reference)
>,<pop_back()
>
Параметры: |
|
Последующие условия: | , если< |
Броски: | Ошибка распределения, если память исчерпана (2964), если используется стандартный распределитель. Все, что<T::T(const T&) >бросает. |
voidpush_front(rvalue_typeitem);>Включить новый элемент в начале пространства оптимизированного кругового буфера.
Безопасность в отношении исключений. Основы.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [размер<
.circular_buffer_space_optimized
>
См. также:
<push_back(const_reference)
>,<pop_back()
>,<pop_front()
>
end()
>[ Элемент должен быть вставлен. | |
Последующие условия:
, если<capacity().capacity() > 0
>, то<front() == item
>
Если<circular_buffer_space_optimized
>заполнен, последний элемент будет удален. Если вместимость<0
>, ничего не будет вставлено.
Количество выделенной памяти во внутреннем буфере может быть прогнозируемо увеличено.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). 3078 или ничего, если<T::T(T&&)
>не является исключением.voidpush_front();>Включить новый элемент в начале пространства оптимизированного кругового буфера.
Безопасность в отношении исключений.
Инвалидация итераторов. Инвалидирует все итераторы, указывающие на<
[за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>
Сложность. Линейный [размер<circular_buffer_space_optimized
>
См. также:
<push_back(const_reference)
>,<pop_back()
>,<pop_front()
>
если< Броски: |
voidpop_back();>Удалить последний элемент из пространства оптимизированного кругового буфера.
Безопасность в отношении исключений. Базовая.
Инвалидация итератора. Инвалидирует все итераторы, указывающие на<
(за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
См. также:
<pop_front()
>,<push_back(const_reference)
>,<push_front(const_reference)
>
Требуется: | < |
Последующие условия: | Последний элемент удален из< |
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). |
voidpop_front();>Удалить первый элемент из пространства оптимизированного кругового буфера.Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [размер<
.]circular_buffer_space_optimized
>
См. также:
<pop_back()
>,<push_back(const_reference)
>,<push_front(const_reference)
>
Требуется: | < |
Последующие условия: | Первый элемент удален из< |
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). |
iteratorinsert(iteratorpos,param_value_typeitem);>Включить элемент в указанном положении.
Безопасность в отношении исключений. Базовая.
Инвалидация итератора. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (по размеру<
.circular_buffer_space_optimized
>
] См. также:
<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>,<rinsert(iterator, value_type)
>,<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>
Параметры: |
| ||||
< | |||||
Последующие условия: | < | ||||
Возвращение: | Итератор к вставленному элементу или< | ||||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бы там ни было<T::T(const T&) >. Что бы ни бросил<T::operator = (const T&) >. |
iteratorinsert(iteratorpos,rvalue_typeitem);>Включить элемент в указанном положении.
Безопасность в отношении исключений.
Инвалидация итераторов.
Инвалидирует все итераторы, указывающие на<
[за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>
Сложность.
[Linear]
<insert(iterator, size_type, value_type)
><insert(iterator, InputIterator, InputIterator)
><insert(iterator, InputIterator, InputIterator)
><insert(iterator, InputIterator, InputIterator)
><rinsert(iterator, value_type)
><rinsert(iterator, value_type)
><rinsert(iterator, size_type, value_type)
>
< | Итератор, определяющий положение, в котором будет вставлен< |
Требует:
<pos
>является действительным итератором, указывающим на<circular_buffer_space_optimized
>или его конец.
Постусловия:
<item
>будет вставлен в положение<pos
>
. Если<circular_buffer_space_optimized
>заполнен, первый элемент будет перезаписан. Если<circular_buffer_space_optimized
>заполнен и<pos
>указывает на<begin()
>, то<item
>не будет вставлен. Если вместимость<0
>, ничего не будет вставлено.
Количество выделенной памяти во внутреннем буфере может быть прогнозируемо увеличено.
Возвращается:
Итератор к вставленному элементу или<begin()
>, если<item
>не вставлен. (См.Эффект.)
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бросит<T::T(const T&)
>или ничего, если<T::T(T&&)
>не является исключением.iteratorinsert(iteratorpos);>Включить элемент в указанном положении.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (размер<
.circular_buffer_space_optimized
>
См. также:
<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>,<rinsert(iterator, value_type)
>,<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>
Параметры: |
|
< | |
Последующие условия: | < |
Возвращение: | Итератор к вставленному элементу или< |
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бы там ни было<T::T() >. Что бросит<T::T(const T&) >или ничего, если<T::T(T&&) >не исключение. |
voidinsert(iteratorpos,size_typen,param_value_typeitem);>Включить<
n
>экземпляры<item
>в указанном положении.Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(за исключением итераторов, равных<circular_buffer_space_optimized
>end()
>.
Линейный (в<min[capacity().capacity(), size() + n]
>.]
Рассмотрим<
с мощностью 6 и размером 4. Его внутренний буфер может выглядеть так, как ниже.circular_buffer_space_optimized
>
<|1|2|3|4| | |
>
<p ___^
>
После вставки 5 элементов в положение<p
>:
<insert(p, (size_t)5, 0);
>
фактически вставляются только 4 элемента и элементы<1
>и<2
>перезаписываются. Это связано с тем, что операция вставки сохраняет емкость. После введения внутренний буфер выглядит следующим образом:
<|0|0|0|0|3|4|
>
Для сравнения, если емкость не будет сохранена, внутренний буфер тогда приведет к<|1|2|0|0|0|0|0|3|4|
>.
См. также:
<insert(iterator, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>,<rinsert(iterator, value_type)
>,<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>
Параметры:
< | Элемент, копии которого будут вставлены. |
< | Число< |
< | Итератор, определяющий положение, в котором будут вставлены< |
<pos
>является действительным итератором, указывающим на<circular_buffer_space_optimized
>или его конец.
Постусловия:
Число<min[n, (pos - begin()) + reserve()]
>элементов будет вставлено в положение<pos
>
. Число<min[pos - begin(), max[0, n - reserve()]]
>элементов будет перезаписано в начале<circular_buffer_space_optimized
>
(см.Примердля объяснения.)
Количество выделенной памяти во внутреннем буфере может быть прогнозируемо увеличено.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бы ни бросил<T::T(const T&)
>. Все, что<T::operator = (const T&)
>бросает.template<typenameInputIterator> voidinsert(iteratorpos,InputIteratorfirst,InputIteratorlast);>Включить диапазон<
[first, last)
>в указанном положении.Безопасность исключения. & #160;Базовый.
Итератор Инвалидация. & #160;Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. & #160;Линейный<[size() + std::distance(first, last)]
>; в<min[capacity().capacity(), size() + std::distance(first, last)]
>, если<InputIterator
>являетсяИтератор случайного доступа.
Рассмотрим<
с мощностью 6 и размером 4. Его внутренний буфер может выглядеть так, как ниже.circular_buffer_space_optimized
>
<|1|2|3|4| | |
>
<p ___^
>
После вставки ряда элементов в положение<p
>:
<int array[] = { 5, 6, 7, 8, 9 };
>
<insert(p, array, array + 5);
>
фактически вставляются только элементы<6
>,<7
>,<8
>и<9
>из указанного диапазона и элементы<1
>и<2
>перезаписываются. Это связано с тем, что операция вставки сохраняет емкость. После введения внутренний буфер выглядит следующим образом:
<|6|7|8|9|3|4|
>
Для сравнения, если емкость не будет сохранена, внутренний буфер тогда приведет к<|1|2|5|6|7|8|9|3|4|
>.
См. также:
<insert(iterator, value_type)
>,<insert(iterator, size_type, value_type)
>,<rinsert(iterator, value_type)
>,<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>
Параметры:
< | Начало диапазона, который будет вставлен. |
< | Конец диапазона должен быть вставлен. |
< | Итератор, определяющий положение, в котором будет вставлен диапазон. |
<pos
>является действительным итератором, указывающим на<circular_buffer_space_optimized
>или его конец.
Дальность действия<[first, last)
>, где<first
>и<last
>соответствуют требованиямИтератор ввода.
Последующие условия:
Элементы из диапазона<[first + max[0, distance(first, last) - (pos - begin()) - reserve()], last)
>будут вставлены в положение<pos
>
. Число<min[pos - begin(), max[0, distance(first, last) - reserve()]]
>элементов будет перезаписано в начале<circular_buffer_space_optimized
>
(см.Примердля объяснения).
Количество выделенной памяти во внутреннем буфере может быть прогнозируемо увеличено.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бросит<T::T(const T&)
>или ничего, если<T::T(T&&)
>не исключение.iteratorrinsert(iteratorpos,param_value_typeitem);>Вставить элемент перед указанным положением.
Безопасность в отношении исключений. Базовая.
Инвалидация итераторов. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (размер<
.circular_buffer_space_optimized
>
См. также:
<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>,<insert(iterator, value_type)
>,<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>
Параметры: |
| ||||
< | |||||
Последующие условия: | < | ||||
Возвращение: | Итератор к вставленному элементу или< | ||||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бы там ни было<T::T(const T&) >. Что бы ни бросил<T::operator = (const T&) >. |
iteratorrinsert(iteratorpos,rvalue_typeitem);>Вставить элемент перед указанным положением.
Безопасность в отношении исключений. Базовая.
Инвалидация итератора. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в размере<
.circular_buffer_space_optimized
>
См. также:
<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>,<insert(iterator, value_type)
>,<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>
Параметры:
< | Элемент должен быть вставлен. |
< | Итератор, определяющий положение, перед которым будет вставлен< |
<pos
>является действительным итератором, указывающим на<circular_buffer_space_optimized
>или его конец.
Постусловия:
<item
>будет вставлен перед положением<pos
>
Если<circular_buffer_space_optimized
>заполнен, последний элемент будет перезаписан. Если<circular_buffer_space_optimized
>заполнен и<pos
>указывает на<end()
>, то<item
>не будет вставлен. Если вместимость<0
>, ничего не будет вставлено.
Количество выделенной памяти во внутреннем буфере может быть прогнозируемо увеличено.
Возвращение:
Итератор к вставленному элементу или<end()
>, если<item
>не вставлен. (См.Эффект.)
Броски:
T::T(const T&)
>или ничего, если<T::T(T&&)
>не исключение.iteratorrinsert(iteratorpos);>Вставить элемент перед указанным положением.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в размере<
.circular_buffer_space_optimized
>
См. также:
<rinsert(iterator, size_type, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>,<insert(iterator, value_type)
>,<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>
| ||
< | ||
Последующие условия: | < | |
Возвращение: | Итератор к вставленному элементу или< | |
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бы там ни было<T::T() >. Все, что<T::T(const T&) >бросает или ничего, если<T::T(T&&) >не является исключением. |
voidrinsert(iteratorpos,size_typen,param_value_typeitem);>Вставить<
n
>экземпляры<item
>перед указанной позицией.Безопасность исключения. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в<min[capacity().capacity(), size() + n]
>.]
Пример. Рассмотрим<
с мощностью 6 и размером 4. Его внутренний буфер может выглядеть так, как ниже.circular_buffer_space_optimized
>
<|1|2|3|4| | |
>
<p ___^
>
После вставки 5 элементов перед положением<p
>:
<rinsert(p, (size_t)5, 0);
>
фактически вставляются только 4 элемента и элементы<3
>и<4
>перезаписываются. Это связано с тем, что операция полоскания сохраняет емкость. После введения внутренний буфер выглядит следующим образом:
<|1|2|0|0|0|0|
>
Для сравнения, если емкость не будет сохранена, внутренний буфер тогда приведет к<|1|2|0|0|0|0|0|3|4|
>.
См. также:
<rinsert(iterator, value_type)
>,<rinsert(iterator, InputIterator, InputIterator)
>,<insert(iterator, value_type)
>,<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>
Параметры: |
| ||||||
< | |||||||
Последующие условия: | Число< | ||||||
Броски: | Ошибка распределения, если память исчерпана<std::bad_alloc >, если используется стандартный распределитель. Все, что<T::T(const T&) >бросает.<T::operator = (const T&) >бросок. |
template<typenameInputIterator> voidrinsert(iteratorpos,InputIteratorfirst,InputIteratorlast);>Включить диапазон<
[first, last)
>перед указанным положением.Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный [в<[size() + std::distance(first, last)]
>; в<min[capacity().capacity(), size() + std::distance(first, last)]
>, если<InputIterator
>являетсяИтератор случайного доступа.
Пример. Рассмотрим<
с мощностью 6 и размером 4. Его внутренний буфер может выглядеть так, как ниже.circular_buffer_space_optimized
>
<|1|2|3|4| | |
>
<p ___^
>
После вставки ряда элементов перед положением<p
>:
<int array[] = { 5, 6, 7, 8, 9 };
>
<insert(p, array, array + 5);
>
фактически вставляются только элементы<5
>,<6
>,<7
>и<8
>из указанного диапазона и элементы<3
>и<4
>перезаписываются. Это связано с тем, что операция полоскания сохраняет емкость. После вставки внутренний буфер выглядит следующим образом:
Для сравнения, если емкость не будет сохранена, внутренний буфер тогда приведет к<|1|2|5|6|7|8|9|3|4|
>.
См. также:
<rinsert(iterator, value_type)
>,<rinsert(iterator, size_type, value_type)
>,<insert(iterator, value_type)
>,<insert(iterator, size_type, value_type)
>,<insert(iterator, InputIterator, InputIterator)
>
< |
< | |
Последующие условия: | Элементы из диапазона< |
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Все, что<T::T(const T&) >бросает. Все, что<T::operator = (const T&) >бросает. |
iteratorerase(iteratorpos);>Удалите элемент в указанном положении.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Недействительные итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
См. также:
<erase(iterator, iterator)
>,<rerase(iterator)
>,<rerase(iterator, iterator)
>,<clear()
>
Параметры: |
| ||
< | |||
Пост-условия: | Элемент в положении< | ||
Возвращение: | Итератор к первому элементу, остающемуся за пределами удаленного элемента или< | ||
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бросит<T::operator = (const T&) >или ничего, если<T::operator = (T&&) >не является исключением. |
iteratorerase(iteratorfirst,iteratorlast);>Удалите диапазон<
[first, last)
>.Безопасность исключения. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
См. также:
<erase(iterator)
>,<rerase(iterator)
>,<rerase(iterator, iterator)
>,<clear()
>
Параметры: |
|
Требуется: | Срок действия< |
Пост-условия: | Элементы из диапазона< |
Возвращение: | Итератор к первому элементу, остающемуся за пределами удаленных элементов или< |
Броски: | Ошибка распределения, если память исчерпана (<std::bad_alloc >, если используется стандартный распределитель). Что бросит<T::operator = (const T&) >или ничего, если<T::operator = (T&&) >не исключение. |
iteratorrerase(iteratorpos);>Снять элемент в указанном положении.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
![]() | Примечание |
---|---|
В принципе, нет никакой разницы между< | < Итератор, указывающий на элемент, который должен быть удален. |
Требует:
<pos
>является действительным итератором, указывающим на<circular_buffer_space_optimized
>[но не на<end()
>
. Количество выделенной памяти во внутреннем буфере может быть предсказуемо уменьшено.
Пост-условия:
Элемент в положении<pos
>удаляется.
Возвращение:
Итератор к первому элементу, остающемуся перед удаленным элементом или<begin()
>, если такого элемента не существует.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бы это ни было (5515) или ничего, если (5516) не является исключением.iteratorrerase(iteratorfirst,iteratorlast);>Удалите диапазон<
[first, last)
>.Безопасность исключения. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
![]() | Примечание |
---|---|
В основном нет разницы между< |
См. также:
<erase(iterator)
>,<erase(iterator, iterator)
>,<rerase(iterator)
>,<clear()
>
first
><last
>
Конец диапазона должен быть удален.
Требуется:
Дальность действия<[first, last)
>.
Последующие условия:
Элементы из диапазона<[first, last)
>удаляются. (5674) Ничего не удаляется.
Количество выделенной памяти во внутреннем буфере может быть предсказуемо уменьшено.
Возвращение:
Итератор к первому элементу, остающемуся перед удаленными элементами, или<begin()
>, если такого элемента не существует.
Броски:
std::bad_alloc
>, если используется стандартный распределитель). Что бы ни бросало<T::operator = (const T&)
>или ничего, если<T::operator = (T&&)
>не является исключением.voidclear();>Удалите все сохраненные элементы из пространственного оптимизированного кругового буфера.
Безопасность в отношении исключений. Базовый.
Итератор Инвалидация. Инвалидирует все итераторы, указывающие на<
(кроме итераторов, равных<circular_buffer_space_optimized
>end()
>.
Сложность. Линейный (в размере<
.circular_buffer_space_optimized
>
См. также:
<~circular_buffer_space_optimized()
>,<erase(iterator)
>,<erase(iterator, iterator)
>,<rerase(iterator)
>,<rerase(iterator, iterator)
>
Последующие условия: | < |
Броски: | Ошибка распределения, если память исчерпана (5843) при использовании стандартного распределителя. |
circular_buffer_space_optimized
private member functionsvoidadjust_min_capacity();>Регулировать объем выделенной памяти.
size_typeensure_reserve(size_typenew_capacity,size_typebuffer_size)const;>Обеспечить резерв для возможного роста.
voidcheck_low_capacity(size_typen=1);>Проверка на низкую пропускную способность.
voidcheck_high_capacity();>Проверка высокой вместимости.
voidreduce_capacity(consttrue_type&);>Специализированный метод снижения мощности.
voidreduce_capacity(constfalse_type&);>Специализированный метод снижения мощности.
template<typenameIntegralType> voidinsert(constiterator&pos,IntegralTypen,IntegralTypeitem, consttrue_type&);>Специализированный метод вставки.
template<typenameIterator> voidinsert(constiterator&pos,Iteratorfirst,Iteratorlast, constfalse_type&);>Специализированный метод вставки.
template<typenameIntegralType> voidrinsert(constiterator&pos,IntegralTypen,IntegralTypeitem, consttrue_type&);>Специализированный метод полоскания.
template<typenameIterator> voidrinsert(constiterator&pos,Iteratorfirst,Iteratorlast, constfalse_type&);>Специализированный метод полоскания.
circular_buffer_space_optimized
private static functionsstaticsize_type init_capacity(constcapacity_type&capacity_ctrl,size_typen);>Определить начальную емкость.
template<typenameIntegralType> staticsize_type init_capacity(constcapacity_type&capacity_ctrl,IntegralTypen, IntegralType,consttrue_type&);>Специализированный метод определения начальной емкости.
template<typenameIterator> staticsize_type init_capacity(constcapacity_type&capacity_ctrl,Iteratorfirst, Iteratorlast,constfalse_type&);>Специализированный метод определения начальной емкости.
template<typenameInputIterator> staticsize_type init_capacity(constcapacity_type&capacity_ctrl,InputIterator, InputIterator,conststd::input_iterator_tag&);>Специализированный метод определения начальной емкости.
template<typenameForwardIterator> staticsize_type init_capacity(constcapacity_type&capacity_ctrl,ForwardIteratorfirst, ForwardIteratorlast,conststd::forward_iterator_tag&);>Специализированный метод определения начальной емкости.
Статья Class template circular_buffer_space_optimized раздела The Boost C++ Libraries BoostBook Documentation Subset Boost.Circular_buffer C++ Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Boost.Circular_buffer C++ Reference ::
реклама |