算法remove()、remove_if()的返回值是什么、使用方法?remove是移除,如何真正的删除
时间: 2024-02-28 21:53:32 浏览: 37
算法 删数问题
remove() 和 remove_if() 函数的返回值是指向最终序列中的新逻辑结尾的迭代器。这些函数用于在序列中删除元素。
remove() 函数接受三个参数:首元素迭代器,尾元素迭代器和要删除的元素的值。它会返回指向最终序列中的新逻辑结尾的迭代器。remove() 函数并不真正删除元素,而是将要删除的元素移动到序列的末尾,并返回指向新逻辑结尾的迭代器。可以用 erase() 函数删除这些元素,使序列的大小与新逻辑结尾相等。
remove_if() 函数与 remove() 函数类似,但它接受一个谓词函数,用于确定哪些元素应该被删除。
要真正删除元素,可以结合使用 remove() 和 erase() 函数。例如:
```cpp
std::vector<int> v {1, 2, 3, 4, 5};
// 移除值为 3 的元素
auto newEnd = std::remove(v.begin(), v.end(), 3);
// 删除移动到末尾的元素
v.erase(newEnd, v.end());
// v 现在包含 {1, 2, 4, 5}
```
这里,remove() 函数将值为 3 的元素移动到了序列的末尾,并返回指向新逻辑结尾的迭代器。然后,erase() 函数删除移动到末尾的元素,使序列的大小与新逻辑结尾相等。
阅读全文