博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习 LLVM(12) SmallString
阅读量:6948 次
发布时间:2019-06-27

本文共 940 字,大约阅读时间需要 3 分钟。

hot3.png

位于 llvm/include/llvm/[[ADT]]/[[SmallString.h]]

参见:

注释:'Normally small' strings -- 普通的小的字符串

这个头文件定义了类 SmallString。

SmallString 是 [[SmallVector]] 的子类,添加了一个方便的 API 来对字符串进行操作,如使用 [[StringRef]] 参数的 += 重载。SmallString 尽量使用预先分配的空间来存放字符串数据,这样避免了不必要的内存分配,在需要的时候才从堆中分配内存。因为 SmallString 自己拥有字符串数据,因此可以安全地使用它进行各种操作和变化。

类似于 [[SmallVector]], SmallString 的大的缺陷是它的 sizeof()。一般放在堆栈(stack)中比较好,极少放在堆(heap)中,也极少用作某个堆中分配的对象的成员或当做返回值。

 

== 类 SmallString 概要 ==

template
class SmallString : public SmallVector
{ // 使用 SmallVector 做底层存储 // 从 SmallVector, SmallVectorBase 等基类获得数据成员。参见 SmallVector char *BeginX, *EndX, *CapacityX; char in_place_buffer[InternalLen]; // 在类中的字符串缓冲,用于说明,实际是 union U 类型的,大小也不是。 // SmallString 自己的。 this() // 多种形式的构造 assign(), append(), compare(), startswith(), endswith(), find() substr(), slice(), +=() 等众多的字符串操作函数。}

 这个类多处使用 [[StringRef]] 做为参数或返回值。

转载于:https://my.oschina.net/u/232554/blog/42214

你可能感兴趣的文章
Kettle5.4实战项目培训课程
查看>>
获取局域网里一个MAC地址对于的IP地址
查看>>
让phpmailer支持中文名称的附件和邮件标题中文乱码(转)
查看>>
JavaScript强化教程——JavaScript Math(算数) 对象
查看>>
CentOS7部署Kubernetes集群
查看>>
struts2中使用DMI(动态调用方法)方式配置action
查看>>
使用hyperpacer实现AWR报告的同步收集
查看>>
关于os.popen你可能不知道的
查看>>
redhat5.3恢复***
查看>>
linux 下mysql的乱码问题
查看>>
门面模式/Facade
查看>>
webService客户端参数为DataHandler类型时候的参数组装
查看>>
遗传算法入门--连载3
查看>>
【安全牛学习笔记】信息收集--DNS
查看>>
Linux 第11天: (08月17日) 练习和作业
查看>>
Install Latest Versions NodeJS NPM on ubuntu
查看>>
Linux常用命令——crontab
查看>>
Discuz! X2 下 URL 静态化的实现方法
查看>>
mongodb删除重复数据
查看>>
项目中常用的第三方框架总结
查看>>