大佬教程收集整理的这篇文章主要介绍了c – 使用公共部分压缩字符串,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考虑两种选择:
– 实现一个压缩存储数据的compressed_String类,但我需要一个固定的字典,我现在无法找到一个库.我不希望霍夫曼在字节上,我希望它在单词上.
– 在字符串部分上实现某种flyweight模式.
这个问题看起来很常见,我想知道什么是最好的解决方案,或者有人知道一个针对这个问题的库.
谢谢
从某种意义上说,它们是表单名称的层次结构中的定位符,(分隔符,名称)*?如果是这样,您可以使用interning:将名称部分存储为指向字符串池的char const *元素.这样,您可以有效地压缩使用N次的名称,使其超过n * sizeof(char const *)strlen(Name)字节.完整路径将成为一系列实习名称,例如一个std :: vector.
看起来sizeof(char const *)在64位硬件上很大,但你也节省了一些分配开销.或者,如果您因某种原因知道您将永远不需要超过65536个字符串,则可以将它们存储为
class interned_name { uint16_t tab_idx; public: char const *c_str() const { return NAME_TABLE[tab_idx]; } };
其中NAME_TABLE是静态std :: unordered_map< uint16_t,char const *>.
以上是大佬教程为你收集整理的c – 使用公共部分压缩字符串全部内容,希望文章能够帮你解决c – 使用公共部分压缩字符串所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。