OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::AutoBuffer< _Tp, fixed_size > 類模板參考

自動分配緩衝區類。 更多...

#include <opencv2/core/utility.hpp>

cv::AutoBuffer< _Tp, fixed_size > 的協作圖

公共型別

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 足夠小,則使用棧分配的緩衝區
 
_Tpdata ()
 返回指向實際緩衝區的指標,棧分配或堆分配
 
const _Tpdata () 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++ 標準要求
 
_Tpptr
 指向實際緩衝區的指標,如果緩衝區足夠小,則可以指向 buf
 
size_t sz
 實際緩衝區的大小
 

詳細描述

template<typename _Tp, size_t fixed_size = 1024/sizeof(_Tp)+8>
class cv::AutoBuffer< _Tp, fixed_size >

自動分配緩衝區類。

該類用於函式和方法中的臨時緩衝區。如果臨時緩衝區通常很小(幾 K 的記憶體),但其大小取決於引數,則在棧上建立一個小的固定大小的陣列並在其足夠大時使用它是有意義的。如果所需的緩衝區大小大於固定大小,則動態分配另一個足夠大小的緩衝區並在處理後釋放。因此,在典型情況下,當緩衝區大小較小時,沒有與 malloc()/free() 相關的開銷。同時,對處理的資料的大小沒有限制。

這就是 AutoBuffer 所做的。模板採用 2 個引數 - 緩衝區元素的型別和棧分配的元素數量。以下是該類的使用方式

void my_func(const cv::Mat& m)
{
cv::AutoBuffer<float> buf(1000); // 建立包含 1000 個浮點數的自動緩衝區
buf.allocate(m.rows); // 如果 m.rows <= 1000,則使用預分配的緩衝區,
// 否則將分配 "m.rows" 個浮點數的緩衝區
// 動態分配並在 cv::AutoBuffer 解構函式中釋放
...
}
自動分配緩衝區類。
定義 utility.hpp:102
_Tp buf[(fixed_size > 0) ? fixed_size :1]
預分配緩衝區。至少 1 個元素以符合 C++ 標準要求
定義 utility.hpp:150
n 維密集陣列類
定義 mat.hpp:830
int rows
行數和列數,或者當矩陣具有 2 個以上維度時為 (-1, -1)
定義 mat.hpp:2165

成員 Typedef 文件

◆ value_type

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
_Tp cv::AutoBuffer< _Tp, fixed_size >::value_type

建構函式 & 解構函式文件

◆ AutoBuffer() [1/3]

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer ( )

預設建構函式

◆ AutoBuffer() [2/3]

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer ( size_t _size)
顯式

建構函式,接受實際緩衝區大小

◆ AutoBuffer() [3/3]

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
cv::AutoBuffer< _Tp, fixed_size >::AutoBuffer ( const AutoBuffer< _Tp, fixed_size > & buf)

複製建構函式

◆ ~AutoBuffer()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
cv::AutoBuffer< _Tp, fixed_size >::~AutoBuffer ( )

解構函式。呼叫 deallocate()

成員函式文件

◆ allocate()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
void cv::AutoBuffer< _Tp, fixed_size >::allocate ( size_t _size)

分配大小為 _size 的新緩衝區。如果 _size 足夠小,則使用棧分配的緩衝區

◆ data() [1/2]

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
_Tp * cv::AutoBuffer< _Tp, fixed_size >::data ( )
inline

返回指向實際緩衝區的指標,棧分配或堆分配

◆ data() [2/2]

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
const _Tp * cv::AutoBuffer< _Tp, fixed_size >::data ( ) const
inline

返回指向實際緩衝區的只讀指標,棧分配或堆分配

◆ deallocate()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
void cv::AutoBuffer< _Tp, fixed_size >::deallocate ( )

如果緩衝區是動態分配的,則釋放它

◆ operator _Tp *()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
cv::AutoBuffer< _Tp, fixed_size >::operator _Tp * ( )
inline

返回指向實際緩衝區的指標,棧分配或堆分配

◆ operator const _Tp *()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
cv::AutoBuffer< _Tp, fixed_size >::operator const _Tp * ( ) const
inline

返回指向實際緩衝區的只讀指標,棧分配或堆分配

◆ operator=()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
AutoBuffer< _Tp, fixed_size > & cv::AutoBuffer< _Tp, fixed_size >::operator= ( const AutoBuffer< _Tp, fixed_size > & buf)

賦值運算子

◆ resize()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
void cv::AutoBuffer< _Tp, fixed_size >::resize ( size_t _size)

調整緩衝區大小並保留內容

◆ size()

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
size_t cv::AutoBuffer< _Tp, fixed_size >::size ( ) const

返回當前緩衝區大小

成員資料文件

◆ buf

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
_Tp cv::AutoBuffer< _Tp, fixed_size >::buf[(fixed_size > 0) ? fixed_size :1]
保護

預分配緩衝區。至少 1 個元素以符合 C++ 標準要求

◆ ptr

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
_Tp* cv::AutoBuffer< _Tp, fixed_size >::ptr
保護

指向實際緩衝區的指標,如果緩衝區足夠小,則可以指向 buf

◆ sz

template<typename _Tp , size_t fixed_size = 1024/sizeof(_Tp)+8>
size_t cv::AutoBuffer< _Tp, fixed_size >::sz
保護

實際緩衝區的大小


此類文件由以下檔案生成