找出两个数组中相同的c++
时间: 2024-09-30 16:05:59 浏览: 59
在C++中,找出两个数组中相同的元素通常可以使用多种方法,这里提供一种常见的方法,即使用哈希集合(如`std::unordered_set`)。这种方法的时间复杂度相对较低,适用于处理大规模数据。
以下是步骤和示例代码:
1. 定义一个函数,接受两个数组作为参数。
2. 创建一个哈希集合来存储第一个数组的所有元素。
3. 遍历第二个数组,对于每个元素,检查它是否存在于哈希集合中,如果存在,则添加到结果容器(例如`std::vector`)中。
4. 返回包含共同元素的结果容器。
```cpp
#include <iostream>
#include <unordered_set>
#include <vector>
// 辅助函数将整数数组转换为哈希集合
std::unordered_set<int> array_to_set(int arr[], int size) {
std::unordered_set<int> set;
for (int i = 0; i < size; ++i)
set.insert(arr[i]);
return set;
}
// 查找并返回两个数组的公共元素
std::vector<int> find_common_elements(int arr1[], int size1, int arr2[], int size2) {
std::unordered_set<int> set1 = array_to_set(arr1, size1);
std::vector<int> common;
for (int i = 0; i < size2; ++i) {
if (set1.find(arr2[i]) != set1.end())
common.push_back(arr2[i]);
}
return common;
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {4, 5, 6, 7, 8};
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int size2 = sizeof(arr2) / sizeof(arr2[0]);
std::vector<int> result = find_common_elements(arr1, size1, arr2, size2);
std::cout << "Common elements: ";
for (auto elem : result)
std::cout << elem << " ";
std::cout << std::endl;
return 0;
}
```
阅读全文