std :: string :: erase如何从字符串中删除字符?

时间:2018-01-01 05:12:09

标签: c++ string c++11

例如,请考虑以下代码。

string str = "Alice ate apples"; 
str.erase(0, 2)

擦除功能是否实际分配新内存并复制" ice ate apples"或擦除功能是否进行就地复制?

1 个答案:

答案 0 :(得分:7)

basic_string实现使erase的迭代器形式抛出异常是非法的。甚至只有erase的索引形式才会在您提供超出范围的索引时抛出。

这很重要,因为分配内存是一种潜在的抛出操作。因此,如果erase无法抛出,则它也不能分配。所以它没有。

因此,擦除必须就地发生。