![]() |
OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
|
自动分配缓冲区类。更多...
#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 |
| 实际缓冲区的大小 | |
自动分配缓冲区类。
该类用于函数和方法中的临时缓冲区。如果临时缓冲区通常很小(内存几 KB),但其大小取决于参数,那么创建一个小的固定大小的数组放在栈上并在足够大时使用它是有意义的。如果所需的缓冲区大小大于固定大小,则动态分配一个足够大的缓冲区并在处理后释放。因此,在典型情况下,当缓冲区大小很小时,不会有与 malloc()/free() 相关的开销。同时,对处理数据的大小没有限制。
这就是 AutoBuffer 的作用。该模板接受 2 个参数——缓冲区的元素类型和栈分配的元素数量。类用法如下:
| _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 足够小,则使用栈分配的缓冲区
|
内联 |
返回指向实际缓冲区(栈分配或堆分配)的指针
|
内联 |
返回指向实际缓冲区(栈分配或堆分配)的只读指针
| void cv::AutoBuffer< _Tp, fixed_size >::deallocate | ( | ) |
如果缓冲区是动态分配的,则取消分配
|
内联 |
返回指向实际缓冲区(栈分配或堆分配)的指针
|
内联 |
返回指向实际缓冲区(栈分配或堆分配)的只读指针
| 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 |
返回当前缓冲区大小
|
保护 |
预分配的缓冲区。至少 1 个元素以符合 C++ 标准要求
|
保护 |
指向实际缓冲区的指针,如果缓冲区足够小,则可以指向 buf
|
保护 |
实际缓冲区的大小