跳转至

String

string 频繁拼接慢,因为可能会多次扩容 + 拷贝,可以使用 reserve 预留容量来优化,减少扩容次数

string 底层是连续内存,中间的改动通常要搬移,复杂度为 \(O(n)\)

查找子串的复杂度通常是 \(O(nm)\) 上界

find 方法返回 string::npos,本质是一个很大的无符号值

string 存的是字节序列,不等于字符数,UTF-8 下一个中文通常占多个字节,size 返回字节数不是“人眼字符数”

c_str 方法返回一个 const char*,指向字符串内部的字符数组,并保证以 \0 结尾。用于传给 C 风格 API;data 方法返回指向内部连续内存的指针。两种方法返回的都是 string 内部缓冲区地址,不是新分配的内存,这个地址只在对应 string 对象还活着、且内部缓冲区没被换掉时有效,一旦对象析构、被移动、或发生可能重分配的修改操作,之前拿到的指针就应视为失效

评论区

欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问