Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何找到两个集合的交集?_C++_Algorithm_Stl_Set_Set Intersection - Fatal编程技术网

C++ 如何找到两个集合的交集?

C++ 如何找到两个集合的交集?,c++,algorithm,stl,set,set-intersection,C++,Algorithm,Stl,Set,Set Intersection,从包含两个集合的值的两个集合中创建子集的最有效方法是什么?任何C++ STL库都可以用来解决这个问题(如果没有升压库): 您可以使用,您将在那里找到一个如何使用它的示例: #include <iostream> #include <vector> #include <algorithm> #include <iterator> int main() { std::vector<int> v1{2, 3, 5, 7, 11};;

从包含两个集合的值的两个集合中创建子集的最有效方法是什么?任何C++ STL库都可以用来解决这个问题(如果没有升压库):

您可以使用,您将在那里找到一个如何使用它的示例:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
    std::vector<int> v1{2, 3, 5, 7, 11};;
    std::vector<int> v2{1, 3, 5, 7, 9, 11};
    std::sort(v1.begin(), v1.end());
    std::sort(v2.begin(), v2.end());

    std::vector<int> v_intersection;

    std::set_intersection(v1.begin(), v1.end(),
                          v2.begin(), v2.end(),
                          std::back_inserter(v_intersection));
    for(int n : v_intersection)
        std::cout << n << ' ';
}
您可以使用,您将在那里找到一个如何使用它的示例:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
    std::vector<int> v1{2, 3, 5, 7, 11};;
    std::vector<int> v2{1, 3, 5, 7, 9, 11};
    std::sort(v1.begin(), v1.end());
    std::sort(v2.begin(), v2.end());

    std::vector<int> v_intersection;

    std::set_intersection(v1.begin(), v1.end(),
                          v2.begin(), v2.end(),
                          std::back_inserter(v_intersection));
    for(int n : v_intersection)
        std::cout << n << ' ';
}

使用
std::set_intersection
,如下所述:


使用
std::设置交叉口
,如下所述:


你已经看过
std::set
了吗?@bigOTHER的回答是正确的,但这个问题是“如何”问题还是算法问题?(如果是算法问题,那么集合是有序的)。你已经看过
std::set
了吗?@bigOTHER的答案是正确的,但是这个问题是“如何”问题还是算法问题?(如果是算法,并且集合是有序的),那么至少链接更好的。@LogicStuff更新, thanks@bigOTHER我的意思是,主要是因为输出中缺少更清晰的示例.11,因为当硬编码值(如5)而不是使用
std::begin
std::end
)时,会出现一个典型的错误。@LogicStuff我更新了示例,至少链接更好。@LogicStuff更新, thanks@bigOTHER我的意思是,这主要是因为更清楚的例子。11由于在5的硬编码值而不是使用<代码> STD::开始< < /C> >和<代码> STD::结束< /COD>:当我在查阅C++文档时更新了示例,我更喜欢,因为第一个是更频繁的。谢谢,我会记住这个。当我查阅C++文档时,我喜欢,因为第一个比后者更正确。谢谢,我会记住这个。
 3 5 7 11