MST

星途 面试题库

面试题:C++中set交集操作实现

请用C++ 实现两个`std::set`的交集操作,假设两个`std::set`分别为`set1`和`set2`,将交集结果存储在一个新的`std::set`中并返回。要求使用`<algorithm>`头文件中的相关算法。
23.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <set>
#include <algorithm>

std::set<int> intersection(const std::set<int>& set1, const std::set<int>& set2) {
    std::set<int> result;
    std::set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(),
                          std::inserter(result, result.begin()));
    return result;
}

你可以通过以下方式调用这个函数:

int main() {
    std::set<int> set1 = {1, 2, 3, 4, 5};
    std::set<int> set2 = {3, 4, 5, 6, 7};
    std::set<int> intersectionSet = intersection(set1, set2);
    for (int num : intersectionSet) {
        std::cout << num << " ";
    }
    return 0;
}

上述代码定义了一个intersection函数,该函数使用<algorithm>头文件中的std::set_intersection算法来计算两个std::set的交集,并将结果存储在一个新的std::set中返回。在main函数中,展示了该函数的调用方法。

  1. intersection函数
    • 接收两个std::set作为参数。
    • 创建一个空的std::set result用于存储交集结果。
    • 使用std::set_intersection算法,该算法需要两个输入范围(set1set2的范围)以及一个输出迭代器(这里使用std::inserter创建的插入迭代器,它会自动将元素插入到result中)。
  2. main函数
    • 创建两个示例std::set set1set2
    • 调用intersection函数计算交集并存储在intersectionSet中。
    • 遍历intersectionSet并输出其中的元素。