MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
类型擦除

容器和数组的通用访问函数 更多...

函数

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) begin (Container &cont) noexcept(noexcept(cont.begin()))
 获取容器的起始迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) end (Container &cont) noexcept(noexcept(cont.end()))
 获取容器的结束迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) begin (const Container &cont) noexcept(noexcept(cont.begin()))
 获取const容器的起始迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) end (const Container &cont) noexcept(noexcept(cont.end()))
 获取const容器的结束迭代器
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * begin (T(&arr)[Size]) noexcept
 获取数组的起始指针
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * end (T(&arr)[Size]) noexcept
 获取数组的结束指针
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) cbegin (const Container &cont) noexcept(noexcept(cont.cbegin()))
 获取const容器的const起始迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) cend (const Container &cont) noexcept(noexcept(cont.cend()))
 获取const容器的const结束迭代器
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr const T * cbegin (T(&arr)[Size]) noexcept
 获取const数组的const起始指针
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr const T * cend (T(&arr)[Size]) noexcept
 获取const数组的const结束指针
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rbegin (Container &cont) noexcept(noexcept(cont.rbegin()))
 获取容器的反向起始迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rend (Container &cont) noexcept(noexcept(cont.rend()))
 获取const容器的反向起始迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rbegin (const Container &cont) noexcept(noexcept(cont.rbegin()))
 获取容器的反向结束迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rend (const Container &cont) noexcept(noexcept(cont.rend()))
 获取const容器的反向结束迭代器
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< T * > rbegin (T(&arr)[Size]) noexcept
 获取数组的反向起始迭代器
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< T * > rend (T(&arr)[Size]) noexcept
 获取数组的反向结束迭代器
template<typename T>
MSTL_NODISCARD constexpr reverse_iterator< const T * > rbegin (std::initializer_list< T > lls) noexcept
 获取初始化列表的反向起始迭代器
template<typename T>
MSTL_NODISCARD constexpr reverse_iterator< const T * > rend (std::initializer_list< T > lls) noexcept
 获取初始化列表的反向结束迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) crbegin (const Container &cont) noexcept(noexcept(cont.crbegin()))
 获取const容器的const反向起始迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) crend (const Container &cont) noexcept(noexcept(cont.crend()))
 获取const容器的const反向结束迭代器
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< const T * > crbegin (T(&arr)[Size]) noexcept
 获取const数组的const反向起始迭代器
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< const T * > crend (T(&arr)[Size]) noexcept
 获取const数组的const反向结束迭代器
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) size (const Container &cont) noexcept(noexcept(cont.size()))
 获取容器的大小
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr size_t size (T(&arr)[Size]) noexcept
 获取数组的大小
template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr size_t size (std::initializer_list< T > lls) noexcept
 获取初始化列表的大小
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) ssize (const Container &cont) noexcept(noexcept(cont.size()))
 获取容器的有符号大小
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr ptrdiff_t ssize (T(&arr)[Size]) noexcept
 获取数组的有符号大小
template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr ptrdiff_t ssize (std::initializer_list< T > lls) noexcept
 获取初始化列表的有符号大小
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr bool empty (const Container &cont) noexcept(noexcept(cont.empty()))
 检查容器是否为空
template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr bool empty (const T *ptr) noexcept
 检查指针是否非空
template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr bool empty (std::initializer_list< T > lls) noexcept
 检查初始化列表是否为空
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) data (Container &cont) noexcept(noexcept(cont.data()))
 获取容器的底层数据指针
template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) data (const Container &cont) noexcept(noexcept(cont.data()))
 获取const容器的const底层数据指针
template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * data (T(&arr)[Size]) noexcept
 获取数组的底层数据指针
template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * data (T *ptr) noexcept
 获取指针本身
template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr const T * data (std::initializer_list< T > lls) noexcept
 获取初始化列表的底层数据指针

详细描述

容器和数组的通用访问函数

函数说明

◆ begin() [1/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) begin ( const Container & cont)
constexprnoexcept

获取const容器的起始迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的起始迭代器

在文件 type_erase.hpp56 行定义.

◆ begin() [2/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) begin ( Container & cont)
constexprnoexcept

获取容器的起始迭代器

模板参数
Container容器类型
参数
cont容器引用
返回
容器的起始迭代器

在文件 type_erase.hpp30 行定义.

◆ begin() [3/3]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * begin ( T(&) arr[Size])
constexprnoexcept

获取数组的起始指针

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
指向数组首元素的指针

在文件 type_erase.hpp83 行定义.

◆ cbegin() [1/2]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) cbegin ( const Container & cont)
constexprnoexcept

获取const容器的const起始迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的const起始迭代器

在文件 type_erase.hpp109 行定义.

◆ cbegin() [2/2]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr const T * cbegin ( T(&) arr[Size])
constexprnoexcept

获取const数组的const起始指针

模板参数
T数组元素类型
Size数组大小
参数
arrconst数组引用
返回
指向数组首元素的const指针

在文件 type_erase.hpp134 行定义.

◆ cend() [1/2]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) cend ( const Container & cont)
constexprnoexcept

获取const容器的const结束迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的const结束迭代器

在文件 type_erase.hpp121 行定义.

◆ cend() [2/2]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr const T * cend ( T(&) arr[Size])
constexprnoexcept

获取const数组的const结束指针

模板参数
T数组元素类型
Size数组大小
参数
arrconst数组引用
返回
指向数组末尾的const指针
注解
末尾指针是最后一个元素之后的位置

在文件 type_erase.hpp148 行定义.

◆ crbegin() [1/2]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) crbegin ( const Container & cont)
constexprnoexcept

获取const容器的const反向起始迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的const反向起始迭代器

在文件 type_erase.hpp258 行定义.

◆ crbegin() [2/2]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< const T * > crbegin ( T(&) arr[Size])
constexprnoexcept

获取const数组的const反向起始迭代器

模板参数
T数组元素类型
Size数组大小
参数
arrconst数组引用
返回
const数组的const反向起始迭代器

在文件 type_erase.hpp283 行定义.

◆ crend() [1/2]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) crend ( const Container & cont)
constexprnoexcept

获取const容器的const反向结束迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的const反向结束迭代器

在文件 type_erase.hpp270 行定义.

◆ crend() [2/2]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< const T * > crend ( T(&) arr[Size])
constexprnoexcept

获取const数组的const反向结束迭代器

模板参数
T数组元素类型
Size数组大小
参数
arrconst数组引用
返回
const数组的const反向结束迭代器

在文件 type_erase.hpp296 行定义.

◆ data() [1/5]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) data ( const Container & cont)
constexprnoexcept

获取const容器的const底层数据指针

模板参数
Container容器类型
参数
contconst容器引用
返回
指向const容器底层数据的const指针

在文件 type_erase.hpp432 行定义.

◆ data() [2/5]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) data ( Container & cont)
constexprnoexcept

获取容器的底层数据指针

模板参数
Container容器类型
参数
cont容器引用
返回
指向容器底层数据的指针

在文件 type_erase.hpp419 行定义.

被这些函数引用 atomic_futex< WaiterBit >::atomic_futex() , 以及 memory_find_pattern().

◆ data() [3/5]

template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr const T * data ( std::initializer_list< T > lls)
constexprnoexcept

获取初始化列表的底层数据指针

模板参数
T元素类型
参数
lls初始化列表
返回
指向初始化列表数据的const指针

在文件 type_erase.hpp470 行定义.

◆ data() [4/5]

template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * data ( T * ptr)
constexprnoexcept

获取指针本身

模板参数
T指针指向的类型
参数
ptr指针
返回
原指针

在文件 type_erase.hpp458 行定义.

◆ data() [5/5]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * data ( T(&) arr[Size])
constexprnoexcept

获取数组的底层数据指针

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
指向数组首元素的指针

在文件 type_erase.hpp446 行定义.

◆ empty() [1/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr bool empty ( const Container & cont)
constexprnoexcept

检查容器是否为空

模板参数
Container容器类型
参数
contconst容器引用
返回
如果容器为空则返回true,否则返回false

在文件 type_erase.hpp383 行定义.

被这些函数引用 function< Res(Args...)>::operator bool() , 以及 function< Res(Args...)>::operator()().

◆ empty() [2/3]

template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr bool empty ( const T * ptr)
constexprnoexcept

检查指针是否非空

模板参数
T指针指向的类型
参数
ptr指针
返回
如果指针非空则返回true,否则返回false

在文件 type_erase.hpp395 行定义.

◆ empty() [3/3]

template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr bool empty ( std::initializer_list< T > lls)
constexprnoexcept

检查初始化列表是否为空

模板参数
T元素类型
参数
lls初始化列表
返回
如果初始化列表为空则返回true,否则返回false

在文件 type_erase.hpp407 行定义.

◆ end() [1/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) end ( const Container & cont)
constexprnoexcept

获取const容器的结束迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的结束迭代器

在文件 type_erase.hpp69 行定义.

◆ end() [2/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) end ( Container & cont)
constexprnoexcept

获取容器的结束迭代器

模板参数
Container容器类型
参数
cont容器引用
返回
容器的结束迭代器

在文件 type_erase.hpp43 行定义.

被这些函数引用 erase(), erase_if(), shift_left(), shift_right() , 以及 string_reverse().

◆ end() [3/3]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr T * end ( T(&) arr[Size])
constexprnoexcept

获取数组的结束指针

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
指向数组末尾的指针
注解
末尾指针是最后一个元素之后的位置

在文件 type_erase.hpp97 行定义.

◆ rbegin() [1/4]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rbegin ( const Container & cont)
constexprnoexcept

获取容器的反向结束迭代器

模板参数
Container容器类型
参数
cont容器引用
返回
容器的反向结束迭代器

在文件 type_erase.hpp184 行定义.

◆ rbegin() [2/4]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rbegin ( Container & cont)
constexprnoexcept

获取容器的反向起始迭代器

模板参数
Container容器类型
参数
cont容器引用
返回
容器的反向起始迭代器

在文件 type_erase.hpp160 行定义.

◆ rbegin() [3/4]

template<typename T>
MSTL_NODISCARD constexpr reverse_iterator< const T * > rbegin ( std::initializer_list< T > lls)
constexprnoexcept

获取初始化列表的反向起始迭代器

模板参数
T元素类型
参数
lls初始化列表
返回
初始化列表的反向起始迭代器

在文件 type_erase.hpp234 行定义.

◆ rbegin() [4/4]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< T * > rbegin ( T(&) arr[Size])
constexprnoexcept

获取数组的反向起始迭代器

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
数组的反向起始迭代器

在文件 type_erase.hpp209 行定义.

◆ rend() [1/4]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rend ( const Container & cont)
constexprnoexcept

获取const容器的反向结束迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的反向结束迭代器

在文件 type_erase.hpp196 行定义.

◆ rend() [2/4]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) rend ( Container & cont)
constexprnoexcept

获取const容器的反向起始迭代器

模板参数
Container容器类型
参数
contconst容器引用
返回
const容器的反向起始迭代器

在文件 type_erase.hpp172 行定义.

◆ rend() [3/4]

template<typename T>
MSTL_NODISCARD constexpr reverse_iterator< const T * > rend ( std::initializer_list< T > lls)
constexprnoexcept

获取初始化列表的反向结束迭代器

模板参数
T元素类型
参数
lls初始化列表
返回
初始化列表的反向结束迭代器

在文件 type_erase.hpp246 行定义.

◆ rend() [4/4]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr reverse_iterator< T * > rend ( T(&) arr[Size])
constexprnoexcept

获取数组的反向结束迭代器

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
数组的反向结束迭代器

在文件 type_erase.hpp222 行定义.

◆ size() [1/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) size ( const Container & cont)
constexprnoexcept

获取容器的大小

模板参数
Container容器类型
参数
contconst容器引用
返回
容器中元素的数量

在文件 type_erase.hpp308 行定义.

被这些函数引用 make_shared(), snprintf() , 以及 vsnprintf().

◆ size() [2/3]

template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr size_t size ( std::initializer_list< T > lls)
constexprnoexcept

获取初始化列表的大小

模板参数
T元素类型
参数
lls初始化列表
返回
初始化列表的大小

在文件 type_erase.hpp333 行定义.

◆ size() [3/3]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr size_t size ( T(&) arr[Size])
constexprnoexcept

获取数组的大小

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
数组的大小

在文件 type_erase.hpp321 行定义.

◆ ssize() [1/3]

template<typename Container>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr decltype(auto) ssize ( const Container & cont)
constexprnoexcept

获取容器的有符号大小

模板参数
Container容器类型
参数
contconst容器引用
返回
容器中元素的数量

在文件 type_erase.hpp345 行定义.

◆ ssize() [2/3]

template<typename T>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr ptrdiff_t ssize ( std::initializer_list< T > lls)
constexprnoexcept

获取初始化列表的有符号大小

模板参数
T元素类型
参数
lls初始化列表
返回
初始化列表的大小

在文件 type_erase.hpp371 行定义.

◆ ssize() [3/3]

template<typename T, size_t Size>
MSTL_NODISCARD MSTL_ALWAYS_INLINE constexpr ptrdiff_t ssize ( T(&) arr[Size])
constexprnoexcept

获取数组的有符号大小

模板参数
T数组元素类型
Size数组大小
参数
arr数组引用
返回
数组的大小

在文件 type_erase.hpp359 行定义.