在计算机中,`erase`函数用于从数据结构中删除元素。以下是一些常见的使用场景和示例:
从`vector`中删除元素
```cpp
include include int main() { std::vector // 删除单个元素 auto iter = vec.begin() + 3; // 第四个元素 vec.erase(iter); // 移除第四个元素 // 删除多个元素 auto start = vec.begin(); auto end = vec.begin() + 5; vec.erase(start, end); // 删除[1, 5]的所有元素 // 删除指定的值 vec.erase(std::remove(vec.begin(), vec.end(), 7), vec.end()); // 删除重复数7 // 输出结果 for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` ```cpp include include int main() { std::string str = "This is an example phrase."; // 删除从位置10开始的8个字符 str.erase(10, 8); std::cout << str << std::endl; // 输出: "This is an phrase." // 删除指定迭代器位置的字符 std::string::iterator it = str.begin() + 9; str.erase(it); std::cout << str << std::endl; // 输出: "This is an phrase." return 0; } ``` 从`list`中删除元素: ```cpp include include int main() { std::list // 删除指定位置的元素 auto iter = lst.begin() + 2; lst.erase(iter); // 删除第三个元素 // 输出结果 for (int num : lst) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 从`set`中删除元素: ```cpp include include int main() { std::set // 删除指定值的元素 s.erase(3); // 输出结果 for (int num : s) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 在使用`erase`函数时,需要注意以下几点: `erase`函数会删除指定位置的元素,并且会使得容器的大小减小。 如果要删除的是一个范围内的元素,容器的大小会相应地减小。 `erase`函数返回一个指向被删除元素之后位置的迭代器。 如果要删除的是一个范围内的元素,返回的迭代器指向删除范围的下一个位置。 `erase`函数只能用于支持随机访问的容器,例如向量和数组。对于链表等不支持随机访问的容器,需要使用特定的成员函数来删除元素,例如`list`的`erase`成员函数。 在使用`erase`函数删除元素时,要注意容器的迭代器是否仍然有效。如果要删除的元素是当前正在遍历的元素,删除后迭代器会失效,需要在删除前更新迭代器。 通过合理地使用`erase`函数,可以实现对容器中元素的删除操作,提高程序的灵活性和效率。从`string`中删除字符
从其他容器中删除元素