gpt4 book ai didi

c++ - C++ 中的不透明句柄

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:45 26 4
gpt4 key购买 nike

我正在实现一个内部不透明数据结构数组的不透明数据结构。我们称它们为记录。将对记录的不同字段进行多次查询,每个查询都具有相同的键。我有一个这种形式的 API 列表:

QueryFieldX(KEY key, FieldX& 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++ - C++ 中的不透明句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com