c++中的不透明句柄
Opaque Handle in C++
我正在实现一个不透明的数据结构,它内部是一个不透明数据结构数组。我们称它们为记录吧。对记录的不同字段会有多个查询,每个字段都有相同的键。我有一个这种形式的api列表:
QueryFieldX(KEY key, FieldX& Data)
每个查询当前使用键搜索记录,然后获得Data。
我想把它改成如下格式:
GetHandleToRecord(KEY key, MYHANDLE handle);
QueryFieldX(MYHANDLE handle, FieldX& Data);
优点是避免了每次都通过记录进行搜索。我可以实现一个MYHANDLE自己,但我想知道是否有一个好的库/数据结构/原语在c++中,给我一个不透明的句柄,我可以使用。
句柄通常是一个模糊的指向数据的指针,例如:
typedef void* MYHANDLE;
您可以根据需要显式地将指针reinterpret_cast
,例如在此代码中。
MYHANDLE GetHandleToRecord(KEY key)
{
FieldX *the_result;
// (assign the correct pointer to the_result)
return reinterpret_cast<MYHANDLE>( the_result );
}
QueryFieldX(MYHANDLE handle, FieldX& Data)
{
Data = *reinterpret_cast<FieldX*>( handle )
}
在您的例子中,句柄也可以是一个数组索引,或者一个std::map
的键。任何可以稍后转换回数据本身的内容
相关文章:
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 如何获取边缘窗口句柄 (HWND)?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 c/c++ 中打开 PhysicalDrive 的句柄并写入 MBR 的 linux 等效是什么?
- 从运行服务的应用程序代码中提取窗口句柄
- 在读取文件后重置句柄
- 是否有像地图这样的C++结构,但我得到的不是值的键,而是值的句柄?
- Windows HANDLE RAII 管理,如果返回布尔值而不是句柄怎么办?
- PeeknamedPipe在服务器给出句柄时不能给出正确数量的字节,只有在句柄来自客户端时才能起作用
- 检查不透明的C句柄是否可以
- QFile:同一物理文件的多个句柄不会写入所有数据
- 在不使用mex的情况下,将C++回调作为函数句柄传递给matlab引擎
- 句柄而不是指针的引用计数
- c++设计:继承和返回不透明句柄
- OpenCppCoverage找不到句柄的路径
- 查找当前打开的文件句柄数(不是lsof)
- 不存储函数返回句柄时的内存管理
- c++中的不透明句柄
- 找不到窗口句柄
- 获取一个FILE *句柄而不实际在磁盘上创建一个文件