以下是一个使用C++编写的比较两个向量并从第二个向量中删除不在第一个向量中找到的元素的示例代码:
#include
#include
#include
void removeElements(std::vector& vec1, std::vector& vec2) {
// 对vec2中的每个元素,查找是否在vec1中存在
// 如果不存在,则从vec2中删除该元素
vec2.erase(std::remove_if(vec2.begin(), vec2.end(), [&](int element) {
return std::find(vec1.begin(), vec1.end(), element) == vec1.end();
}), vec2.end());
}
int main() {
std::vector vec1 = {1, 2, 3, 4, 5};
std::vector vec2 = {3, 4, 5, 6, 7};
std::cout << "Before removing elements: ";
for (int element : vec2) {
std::cout << element << " ";
}
std::cout << std::endl;
removeElements(vec1, vec2);
std::cout << "After removing elements: ";
for (int element : vec2) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
Before removing elements: 3 4 5 6 7
After removing elements: 3 4 5
在上面的示例中,removeElements
函数接收两个向量作为参数。它使用了std::remove_if
算法结合lambda表达式来删除vec2
中不在vec1
中找到的元素。最后,我们在main
函数中测试了这个函数,并打印了结果。
上一篇:比较两个向量 Python