Flatbuffers - 对象 API - 用于提高效率的指针数组?

Flatbuffers - object API - Array of pointers for efficiency?

提问人:LeXav 提问时间:10/19/2023 最后编辑:LeXav 更新时间:10/19/2023 访问量:49

问:

给定以下架构,使用 C++ 中的对象 APi,

include "link_to_sub.fbs";
namespace My_namespace;


table My_tables {

    list : [ namespace.of.Table ] (required, native_inline);

}

root_type My_tables;

在 生成的文件中,我最终得到一个向量 in ,这是预期的,定义为:flacTableTMy_tablesT

vector<namespace::of::TableT> list{}

我想要

vector<namespace::of::TableT*> list{}

相反,因为我已经在记忆中的某个地方了。这样可以避免一个完整的副本。TableT

注意:我想继续使用 c++ 对象 api,要容易得多。

注意 2:上下文是动态 flatbuffer 创建,因此它们是使用来自现有来源的不同数据动态创建的。

我该怎么做,我怎样才能告诉flatc生成指针向量?

谢谢

C++ 平面缓冲区

评论

0赞 Daniel Langr 10/19/2023
你是在问如何创建指针向量吗?你有什么特别的问题?无论如何,如果您不需要关心由其他代码管理的那些表的生存期,则原始指针是合适的。否则,共享指针,甚至共享指针和弱指针的组合可能更合适。
0赞 LeXav 10/19/2023
@DanielLangr:我的表处于未修改的内存中,比当前块的寿命长,因此可以安全地指向它。但是,是的,我想告诉 flatc,我希望它使用指针向量而不是真正的本机类型。也许自定义分配器会有所帮助,但不确定

答:

2赞 LeXav 10/19/2023 #1

明白了:

cpp_ptr_type: "naked"

在球场上。

好。