1#ifndef NEFORCE_CORE_MEMORY_TEMPORARY_BUFFER_HPP__
2#define NEFORCE_CORE_MEMORY_TEMPORARY_BUFFER_HPP__
15NEFORCE_BEGIN_NAMESPACE__
31template <
typename Iterator>
58 NEFORCE_CONSTEXPR20
void allocate_buffer() {
82 template <
typename U = value_type, enable_if_t<is_trivially_copy_assignable_v<U>,
int> = 0>
83 NEFORCE_CONSTEXPR20
void initialize_buffer(
const U& val)
noexcept {}
93 template <
typename U = value_type, enable_if_t<!is_trivially_copy_assignable_v<U>,
int> = 0>
94 NEFORCE_CONSTEXPR20
void initialize_buffer(
const U& val) {
115 len_ = _NEFORCE
distance(first, last);
116 this->allocate_buffer();
118 this->initialize_buffer(*first);
134 _NEFORCE
destroy(buffer_, buffer_ + len_);
142 NEFORCE_NODISCARD NEFORCE_CONSTEXPR20
size_type size() const noexcept {
return len_; }
154 NEFORCE_NODISCARD NEFORCE_CONSTEXPR20
pointer begin() noexcept {
return buffer_; }
160 NEFORCE_NODISCARD NEFORCE_CONSTEXPR20
pointer end() noexcept {
return buffer_ + len_; }
172 NEFORCE_NODISCARD NEFORCE_CONSTEXPR20
const_pointer cend() const noexcept {
return buffer_ + len_; }
178 NEFORCE_NODISCARD NEFORCE_CONSTEXPR20
bool empty() const noexcept {
return len_ == 0; }
183NEFORCE_END_NAMESPACE__
static NEFORCE_NODISCARD constexpr T max() noexcept
获取类型的最大值
static NEFORCE_CONSTEXPR20 void deallocate(pointer p, const size_type n) noexcept
NEFORCE_ALLOC_NODISCARD NEFORCE_CONSTEXPR20 static NEFORCE_ALLOC_OPTIMIZE pointer allocate()
constexpr const T & max(const T &a, const T &b, Compare comp) noexcept(noexcept(comp(a, b)))
返回两个值中的较大者
NEFORCE_CONSTEXPR20 void destroy(T *pointer) noexcept(is_nothrow_destructible_v< T >)
销毁单个对象
NEFORCE_INLINE17 constexpr bool is_ranges_fwd_iter_v
检查是否为范围前向迭代器
constexpr iter_difference_t< Iterator > distance(Iterator first, Iterator last)
计算两个迭代器之间的距离
typename iterator_traits< Iterator >::value_type iter_value_t
获取迭代器的值类型
NEFORCE_CONSTEXPR20 Iterator uninitialized_fill_n(Iterator first, size_t n, const T &x)
在未初始化内存中用指定值填充指定数量的元素
standard_allocator< value_type > allocator_type
分配器类型
NEFORCE_CONSTEXPR20 temporary_buffer(Iterator first, Iterator last)
构造函数
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 pointer end() noexcept
获取缓冲区结束迭代器
temporary_buffer(const temporary_buffer &)=delete
禁止复制构造
ptrdiff_t difference_type
差异类型
void operator=(const temporary_buffer &)=delete
禁止复制赋值
const value_type & const_reference
常量引用类型
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 bool empty() const noexcept
检查缓冲区是否为空
value_type & reference
引用类型
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 size_type requested_size() const noexcept
获取请求的缓冲区大小
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 pointer begin() noexcept
获取缓冲区起始迭代器
NEFORCE_CONSTEXPR20 ~temporary_buffer()
析构函数
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 const_pointer cend() const noexcept
获取常量缓冲区结束迭代器
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 size_type size() const noexcept
获取缓冲区实际大小
iter_value_t< Iterator > value_type
元素类型
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 const_pointer cbegin() const noexcept
获取常量缓冲区起始迭代器
const value_type * const_pointer
常量指针类型