C++实现将既在std::vector<int> arr1与std::vector<int> arr2又在std::vector<int> arr3中的元素从arr1中删除,将arr1中的剩余元素返回
时间: 2024-03-11 09:48:17 浏览: 167
可以使用std::erase_if()
和std::find()
算法函数来实现这个功能。具体实现如下:
#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
。
相关推荐

















