C++实现将既在std::vector<int> arr1与std::vector<int> arr2又在std::vector<int> arr3中的元素从arr1中删除,将arr1中的剩余元素返回
时间: 2024-03-11 18:48:17 浏览: 150
可以使用`std::erase_if()`和`std::find()`算法函数来实现这个功能。具体实现如下:
```cpp
#include <algorithm>
#include <vector>
std::vector<int> remove_common_elements(std::vector<int>& arr1, const std::vector<int>& arr2, const std::vector<int>& arr3)
{
std::vector<int> common_elems;
for (const auto& elem : arr1)
{
if (std::find(arr2.begin(), arr2.end(), elem) != arr2.end() &&
std::find(arr3.begin(), arr3.end(), elem) != arr3.end())
{
common_elems.push_back(elem);
}
}
std::erase_if(arr1, [&](const auto& elem){ return std::find(common_elems.begin(), common_elems.end(), elem) != common_elems.end(); });
return arr1;
}
```
这个函数会返回从`arr1`中删除了既在`arr2`与`arr3`中的元素后的`arr1`。它首先遍历`arr1`,找到既在`arr2`与`arr3`中的元素,将它们保存在`common_elems`中。然后使用`std::erase_if()`函数删除`arr1`中在`common_elems`中出现的元素。最后返回修改后的`arr1`。
阅读全文