第一个问题,std::string::erase
是否重新分配?
第二个问题,有没有更快的方法可以从 std::string
中快速删除某些单词或短语?字符串的长度通常在300K左右。
最佳答案
未定义 string::erase
是否会触发重新分配。您可以通过将 string::capacity
与调用该方法之前和之后发生的情况进行比较来进行检查。删除部分字符串总是会触发删除部分之后的所有字符的拷贝,因为字符串的存储要求是连续的。
对于大型字符串的操作,您可能需要考虑改用绳索或 std::list。根据您的操作,结果可能会更快。
关于C++ 是否 std::string::erase 重新分配和...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974591/