1
14
尽管有批评,我认为这是一个有效的问题。
这个
建议1: 首选非成员非朋友方法
既然这样说了,在国际化的这个时刻,我当然建议您设计一个支持
建议2:
支持
然后,内存分配方案上有许多点:
我个人会在这里选择“小字符串优化”(尽管它并不排斥其他两个),这仅仅是因为它很容易实现,而且实际上会使您受益(堆分配成本、引用问题的位置)。 另外两种技术在面对多线程时有点复杂,而且这些技术很容易出错,除非经过精心设计,否则不太可能产生任何真正的好处。 这就是我最后的建议: 建议3: 不要在尝试多线程支持时实现内部锁定 当在单线程上下文中使用时,它将减慢类的速度,并且不会产生像在多线程上下文中使用时那样多的好处。 最后,通过浏览现有的代码,您可能会找到适合自己口味的东西(或获得一些提示)。但我不保证展示“平滑”的界面:
|
2
3
Effective STL
作者Scott Meyers对可能性进行了一些有趣的讨论
|
3
2
根据“自定义”是什么(例如自定义分配器),您可以通过std::basic_string类的模板参数来执行此操作。 |
4
2
Herb Sutter在 GotW #29 . 你可以先用它。 |
5
1
从通用的角度来看,“新”字符串类理想地结合了std::string、cstring、qstring和其他方面的优点。随机数点:
|
6
0
世界不需要另一个字符串类。这是作业吗?如果没有,使用
|
7
0
std::string的问题是..你不能改变它。有时需要STD::字符串的基础知识,但不同意C++库的实现。 例如,使用线程安全引用计数意味着大量的锁定(或者至少是锁定的操作)。另外,如果您的大多数字符串都很短(因为您知道情况会是这样),那么您可能需要一个针对该用例进行优化的字符串类。 因此,即使您喜欢std::string API,或者至少已经学会了使用它,也有足够的空间来进行“竞争性实现”,这些实现或多或少都是工作技能。 powerdns希望有一个,因为我们目前传递了很多DNS主机名,其中大部分可以放在一个25字节的固定缓冲区中,这将减轻许多新的/删除的压力。 |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |