news 2026/6/15 20:54:53

C++的String类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++的String类

Hello,我还是那只王文,到寒假了~做了好几天库,才发现我居然没更新了~
加入组织链接:

https://gitcode.com/invite/link/6a9749da4e7b47f29d39https://gitcode.com/invite/link/6a9749da4e7b47f29d39

最近发现原版的std::string类有很多不足,就那元宝举例啦(企鹅看到了记得广告费给一下(pian人的)

  1. COW(写时复制)的弃用

    C++11 前某些实现用 COW 优化,但 C++11 的线程安全要求使多数实现放弃 COW,转为直接深拷贝或 SSO,可能增加大字符串复制的开销。

  2. SSO(短字符串优化)实现不一

    虽 SSO 提升短字符串性能,但不同编译器的内部缓冲区大小不同(通常 15-22 字节),导致性能可移植性差。

  3. 内存碎片化

    频繁修改字符串(如拼接、重分配)可能导致内存碎片,影响长期运行性能。

  4. 隐藏的内存分配

    str1 = str2 + str3 + str4; // 可能产生临时对象,多次分配

于是我自己造了一个String类,用了(此处作者吸了一口气):SSO(短字符串优化),RAII(资源获取即初始化),自定义分配器,容量对齐,渐进式增长,异常安全,移动语义,noexcept 优化,SFINAE,std::initializer_list 支持,内存操作优化,查找算法,缓冲区管理.....

反正就是很多内容啦~

点赞过200,我就让他支持Unicode字符集
项目地址:String:C++ String Class.C++字符串类。 - AtomGit | GitCode

对了,最近入驻GitHub了,可以搜ProgramForge来找我,
GitHub地址:DWW973/String: C++ String Class.C++字符串类。 --- DWW973/String: C++ String Class.C++字符串类。

就这样啦,bye,bye~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:06:33

为什么 Python 项目都在用 TOML?一份让配置文件「说人话」的指南

为什么 Python 项目都在用 TOML?一份让配置文件「说人话」的指南 当你的 setup.py 被 200 行嵌套字典淹没,当 YAML 因一个空格让你加班到凌晨——是时候认识 TOML 了:一门为人类设计的配置语言。 一、TOML 的诞生:当配置文件开始「…

作者头像 李华
网站建设 2026/6/15 11:05:58

蜜雪冰城小程序 sign

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!部分python代码url "/api/v2/sho…

作者头像 李华
网站建设 2026/6/15 12:59:43

在无备份的本地电脑上用OpenClaw是有危险性的

我让Openclaw调用各种CLI大模型,对一个 15G的文件夹下的文件进行识别、分析,整理一份报告出来。 结果,它先把这个文件夹复制到工作区下,没跟我商量。 我无意间发现可用硬盘空间少了16G左右!大吃一惊!还好这…

作者头像 李华
网站建设 2026/6/15 12:22:02

中日一旦爆发战争,一天拿下日本现实吗?

中日一旦爆发战争,一天拿下日本现实吗?说句实话,真打起来,别说一天,就算拖上一整年,想稳稳压住都难如登天,这不是悲观,而是现实太硬,日本背后撑腰的不是别人,…

作者头像 李华
网站建设 2026/6/15 11:07:17

告别 Flaky Tests:Go 官方拟引入 testing/nettest,重塑内存网络测试标准

大家好,我是Tony Bai。在 Go 语言的测试哲学中,我们一直追求快速、稳定和可重复。然而,一旦测试涉及到 net 包——无论是 HTTP 服务、RPC 框架还是自定义协议——这种追求往往就会撞上现实的墙壁。我们通常面临两种选择:要么在 lo…

作者头像 李华