OpenCV 4.10.0
开源计算机视觉库
|
自动分配的缓冲区类。 更多...
#include <opencv2/core/utility.hpp>
公共类型 | |
typedef _Tp | value_type |
公共成员函数 | |
AutoBuffer () | |
默认构造函数 | |
AutoBuffer (const AutoBuffer< _Tp, fixed_size > &buf) | |
复制构造函数 | |
AutoBuffer (size_t _size) | |
接收实际缓冲区大小的构造函数 | |
~AutoBuffer () | |
析构函数。调用 deallocate() | |
void | allocate (size_t _size) |
分配大小为 _size 的新缓冲区。如果 _size 足够小,则使用堆栈分配的缓冲区 | |
_Tp * | data () |
返回指向实际缓冲区的指针,堆栈分配或堆分配 | |
const _Tp * | data () const |
返回指向实际缓冲区的只读指针,堆栈分配或堆分配 | |
void | deallocate () |
如果缓冲区是动态分配的,则解除分配它 | |
operator _Tp * () | |
返回指向实际缓冲区的指针,堆栈分配或堆分配 | |
operator const _Tp * () const | |
返回指向实际缓冲区的只读指针,堆栈分配或堆分配 | |
AutoBuffer< _Tp, fixed_size > & | operator= (const AutoBuffer< _Tp, fixed_size > &buf) |
赋值运算符 | |
void | resize (size_t _size) |
调整缓冲区大小并保留内容 | |
size_t | size () const |
返回当前缓冲区大小 | |
受保护的属性 | |
_Tp | buf [(fixed_size > 0) ? fixed_size :1] |
预分配的缓冲区。至少 1 个元素才能满足 C++ 标准要求 | |
_Tp * | ptr |
指向实际缓冲区的指针,如果缓冲区足够小,则可以指向 buf | |
size_t | sz |
实际缓冲区的大小 | |
自动分配的缓冲区类。
该类用于函数和方法中的临时缓冲区。如果临时缓冲区通常很小(几 K 的内存),但其大小取决于参数,那么有意义的是在堆栈上创建一个小的固定大小数组,并在它足够大的情况下使用它。如果所需的缓冲区大小大于固定大小,则会动态分配另一个足够大小的缓冲区,并在处理后释放它。因此,在典型情况下,当缓冲区大小很小时,与 malloc()/free() 相关的开销很小。同时,对处理数据的规模也没有限制。
这就是 AutoBuffer 的作用。该模板接受 2 个参数 - 缓冲区元素的类型和堆栈分配元素的数量。以下是该类的使用方法
typedef _Tp cv::AutoBuffer< _Tp, fixed_size >::value_type |
cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer | ( | ) |
默认构造函数
|
explicit |
接收实际缓冲区大小的构造函数
cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer | ( | const AutoBuffer< _Tp, fixed_size > & | buf | ) |
复制构造函数
cv::AutoBuffer< _Tp, fixed_size >::~AutoBuffer | ( | ) |
析构函数。调用 deallocate()
void cv::AutoBuffer< _Tp, fixed_size >::allocate | ( | size_t | _size | ) |
分配大小为 _size 的新缓冲区。如果 _size 足够小,则使用堆栈分配的缓冲区
|
inline |
返回指向实际缓冲区的指针,堆栈分配或堆分配
|
inline |
返回指向实际缓冲区的只读指针,堆栈分配或堆分配
void cv::AutoBuffer< _Tp, fixed_size >::deallocate | ( | ) |
如果缓冲区是动态分配的,则解除分配它
|
inline |
返回指向实际缓冲区的指针,堆栈分配或堆分配
|
inline |
返回指向实际缓冲区的只读指针,堆栈分配或堆分配
AutoBuffer< _Tp, fixed_size > & cv::AutoBuffer< _Tp, fixed_size >::operator= | ( | const AutoBuffer< _Tp, fixed_size > & | buf | ) |
赋值运算符
void cv::AutoBuffer< _Tp, fixed_size >::resize | ( | size_t | _size | ) |
调整缓冲区大小并保留内容
size_t cv::AutoBuffer< _Tp, fixed_size >::size | ( | ) | const |
返回当前缓冲区大小
|
protected |
预分配的缓冲区。至少 1 个元素才能满足 C++ 标准要求
|
protected |
指向实际缓冲区的指针,如果缓冲区足够小,则可以指向 buf
|
protected |
实际缓冲区的大小