火山PC的各种文本数组类的区别和使用场景
火山PC系统有 文本数组类、文本标准数组类、高性能文本数组类;请教一下他们都有什么区别?
什么场景下使用它们比较好呢?
目前我用的较多的是文本数组类,因为常用到全局方法 分割文本() 方法,而这个方法只支持使用文本数组类来接收分割结果。
本帖最后由 hcwanz 于 2024-6-9 11:25 编辑
文本数组类//专门为火山文本类做的
文本标准数组类//封装的c++vector
文本数组类是吴总自己写的数组类,实际成员类型是文本指针,而不是文本型,所以每次取成员,都会将文本指针复制到一个新的文本型里。
文本标准数组类是基于STL标准库里的std::vector,成员类型是文本型,取成员后只要不赋值,就不会有额外的拷贝。
但以上两者效率相差不大,用哪个都可以。如果是传文本数组给C的函数,第一种会更好使。
高性能文本数组类备注上的那句「作用和"文本数组类"一致,但性能更高.」,你可以认为是胡说的。
这个类是用来配合大色封装的 MMKV,由于大色把 MMKV 改成了 dll,也没有提供源码,根据 MMKV 的源码,我猜它内部应该是 std::vector<std::string>。
火山的文本型是 UTF-16LE 编码,MMKV 里的 std::string 是 UTF-8 编码,所以这个高性能文本数组类加入成员和取成员都要做一次编码转换,谈不上啥性能。
除了配合高性能键值表之外,不应该单独使用。 谢谢各位老师的解答!! Xelloss0618 发表于 2024-6-9 11:29
文本数组类是吴总自己写的数组类,实际成员类型是文本指针,而不是文本型,所以每次取成员,都会将文本指针 ...
似乎文本数组类.取成员()取出来的文本是一个副本,与数组里的没有关系了,如果是文本指针的话是不是应该像对象数组类的取成员()一样有一个返回参考的属性。
zlk 发表于 2025-1-27 00:39
似乎文本数组类.取成员()取出来的文本是一个副本,与数组里的没有关系了,如果是文本指针的话是不是应该 ...
返回参考也没用,文本指针到文本型,必然会复制数据,产生副本。
当然,文本数组类其实也可以自己改一下,让它直接返回文本指针,但直接操作指针不安全,所以吴总没封装出来。
现在你可以用「文本标准数组类」,里面的成员就是文本型。
页:
[1]