C++ 是否 std::string::erase 重新分配和...?

标签 c++

第一个问题,std::string::erase 是否重新分配?

第二个问题,有没有更快的方法可以从 std::string 中快速删除某些单词或短语?字符串的长度通常在300K左右。

最佳答案

未定义 string::erase 是否会触发重新分配。您可以通过将 string::capacity 与调用该方法之前和之后发生的情况进行比较来进行检查。删除部分字符串总是会触发删除部分之后的所有字符的拷贝,因为字符串的存储要求是连续的。

对于大型字符串的操作,您可能需要考虑改用绳索或 std::list。根据您的操作,结果可能会更快。

关于C++ 是否 std::string::erase 重新分配和...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974591/

相关文章:

c++ - 分析 stable_sort

c++ - 如何保存 1 BPP、4 BPP 和 8BPP 图像

添加到 std::map 的 C++ 宏

c++ - struct 定义中的 typedef 用法

c++ - C++ OpenGL纹理,找不到图像

c++ - const关键字在C++函数原型(prototype)中意味着什么?

c++ - C 程序用不同的数字输出不同的值?

c++ - 理解 C++ 中的数值溢出

c++ - 将 base64 解码后的字符串转换为 unsigned char[32]

c++ - Qt 项目中的前向声明