字符串的模板库提供有效的串联
Template library for string providing efficient concatenation
是否有等同于闪电战 库的字符串(即,通过延迟字符串构建来提高字符串构建/操纵性能的库,直到读取整个表达式?
) Blitz 通过模板元编程提高了矩阵/向量操作的速度,在编译时间中从A + B + C
之类的表达式构造"语法树",然后评估语法树。例如,此方法可以改善字符串串联的性能,因为在看到像s1 + s2 + s3
这样的表达式之后,结果的大小将是已知的,因此,可以在一步中进行内存分配和复制,而不是首先分配s1 + s2
的内存,复制,为(s1 + s2) + s3
分配内存,然后再次复制。
我知道QString
使用表达模板来确定最终字符串的大小并有效地提前分配此字符串。我认为基本代码并不难,并且可以与大多数现有的字符串类一起工作。从QT 4.8手册中:
QStringBuilder
使用表达模板并重新实现'%'
操作员,因此当您使用'%'
进行字符串串联而不是'+'
时,将推迟多个衬字串联,直到将最终结果分配给QString
为止。此时,已知最终结果所需的内存量。然后调用内存分配器一次以获取所需的空间,并将子字节复制到其中。
请看一下该主题的Wiki,以了解该技术的示例。
请注意,这确实会干扰使用decltype(a+b)
或auto c = a+b
的内容,其中使用了表达模板operator+
,因为返回的类型是代理类型,而不是a
或CC_14的原始类型。
相关文章:
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 如何正确解析子字符串,以便它们对我的新手计算器有效?
- C++程序在将 int 与 cin 一起使用时有效,但不能使用字符串
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 创建字符串数组的有效方法
- 访问包含P的有效索引时返回空格的C++字符串
- 如何有效地将一个大std::字符串的一部分转换为float
- C++Int有效地字符串
- 是否有更有效的方法来生成日期的REGEX字符串
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 为C++字符串中的特殊符号 (") 赋予文字含义的有效C++方法
- 拆分字符串输入并查找字符是否有效
- 设计返回有效字符串的方法或函数
- 使用 pair<int、int> 或字符串作为 map<> 键,哪个更有效?
- 字符串只包含有效的字符?
- 如何更有效地计算n个字符串之间的不匹配分数?
- 当字符串中只有一个"GOOD"字符串可用时,从没有空格的字符串中提取第一个单词的最佳和有效方法?
- 使用UTF8Proc的C 字符串到UTF8有效字符串
- 保证有效字符串作为函数参数