精华内容
下载资源
问答
  • C++ 求并集、交集、差集

    千次阅读 2020-03-24 14:57:56
    #include<iostream> #include<iterator> #include<algorithm> using namespace std; int main(){ int a[] = {1, 2, 3, 4, 5, 6}; int b[] = {3, 4, 5, 8, 9, 10};... int N = sizeo...

     

    #include<iostream>
    #include<iterator>
    #include<algorithm>
    using namespace std;
    
    int main(){
        int a[] = {1, 2, 3, 4, 5, 6};
        int b[] = {3, 4, 5, 8, 9, 10};
        int N = sizeof(a) / sizeof(int);
        int M = sizeof(b) / sizeof(int);
        ostream_iterator<int> output(cout, " ");
        
        int size = N + M;
        int intersection[size]; 
        int *ptr = set_intersection(a, a + N, b, b + M, intersection);
        copy(intersection, ptr, output);
        cout<<endl;
        
        int unionset[size];
        ptr = set_union(a, a + N, b, b + M, unionset);
        copy(unionset, ptr, output);
        cout<<endl;
        
        int difference[size];
        ptr = set_difference(a, a + N, b, b + M, difference);
        copy(difference, ptr, output);
        cout<<endl;
    
    	return 0;
    }

     

    展开全文
  • C++ STL 求并集、交集、差集

    千次阅读 2020-01-28 11:36:55
    求并集 :std::set_union 将两个set的并集放入vector中。 #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { set<int> a; set<int> b; a.insert(1); a...

    求并集 :std::set_union

    将两个set的并集放入vector中。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        set<int> a;
        set<int> b;
        a.insert(1);
        a.insert(3);
        a.insert(5);
        a.insert(4);
        a.insert(9);
        a.insert(6);
    
        b.insert(5);
        b.insert(6);
        b.insert(7);
    
        vector<int> result;
        set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(result,result.begin()));
        for(int i=0;i<result.size();i++)
        {
            cout<<result[i]<<" ";
        }
        return 0;
    }
    

    运行结果

    1 3 4 5 6 7 9
    

    注意: set具有有序性,即对插入的元素会进行自动排序,而如果需要对vector进行求并集、交集、差集操作,请提前使用sort函数进行排序。

    求交集 :set_intersection

    两个vector求交集,并将结果保留到vector中。
    这次我们插入的数据已是有序,所以不需要再排序。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        vector<int> a;
        vector<int> b;
        a.push_back(1);
        a.push_back(3);
        a.push_back(5);
        a.push_back(6);
        a.push_back(7);
        a.push_back(10);
    
        b.push_back(5);
        b.push_back(6);
        b.push_back(7);
    
        vector<int> result;
        set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(result,result.begin()));
    
        for(int i=0;i<result.size();i++)
        {
            cout<<result[i]<<" ";
        }
        return 0;
    }
    

    运行结果:

    5 6 7
    

    求差集 :set_difference

    将两个vector求差集,放入新的vector中。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        vector<int> a;
        vector<int> b;
        a.push_back(1);
        a.push_back(3);
        a.push_back(5);
        a.push_back(6);
        a.push_back(7);
        a.push_back(10);
    
        b.push_back(5);
        b.push_back(6);
        b.push_back(7);
    
        vector<int> result;
        set_difference(a.begin(),a.end(),b.begin(),b.end(),inserter(result,result.begin()));
    
        for(int i=0;i<result.size();i++)
        {
            cout<<result[i]<<" ";
        }
        return 0;
    }
    
    

    运行结果:

    1 3 10
    

    拾遗

    需要注意的是,这三个函数并不会帮我们完成去重操作,如果需要去重,请使用unique函数。

    以求交集为例,vector中存在相同元素。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        vector<int> a;
        vector<int> b;
        a.push_back(1);
        a.push_back(3);
        a.push_back(5);
        a.push_back(5);
        a.push_back(7);
        a.push_back(10);
    
        b.push_back(5);
        b.push_back(5);
        b.push_back(7);
    
        vector<int> result;
        set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(result,result.begin()));
    
        for(int i=0;i<result.size();i++)
        {
            cout<<result[i]<<" ";
        }
        return 0;
    }
    
    

    运行结果

    5 5 7
    

    如果想要的是不相等的,可通过譬如

    result.erase(unique(result.begin(),result.end()), result.end());
    

    来解决。

    展开全文
  • C++二个数组求并集的实现算法C++二个数组求并集的实现算完整源码(定义,实现,main函数测试) C++二个数组求并集的实现算完整源码(定义,实现,main函数测试) #include <iostream> int main() { int m, n, i...

    C++二个数组求并集的实现算完整源码(定义,实现,main函数测试)

    #include <iostream>
    int main() {
       
        int m, n, i = 0, j = 0
    展开全文
  • 顺序表求并集和交集,用C++实现的,定义了一个顺序表的类。
  • } } //并集 + 排序(A ∪ B = C) int_set* elem_union(int_set *B) { int i, j; //动态开辟集合C的内存空间 int new_max_size = this->max_size + B->max_size; int_set *C = new int_set(new_...
    #include<iostream>
    using namespace std;
    
    class int_set
    {
    private:
    	int max_size;      //最大容量
    	int current_size;  //当前大小
    	int *p;            //动态数组
    
    public:
    	//构造函数
    	int_set(int &arr_size) :max_size(arr_size), current_size(0)
    	{
    		this->p = new int[arr_size];
    	}
    
    	//拷贝构造函数
    	int_set(const int_set &copy)
    	{
    		this->max_size = copy.max_size;
    		this->current_size = copy.current_size;
    		this->p = new int[copy.max_size];
    		for (int i = 0; i < this->current_size; i++)
    		{
    			this->p[i] = copy.p[i];
    		}
    	}
    
    	//析构函数
    	~int_set()
    	{
    		delete[]p;
    	}
    
    	//查找相同元素
    	int search(int &elem)
    	{
    		for (int i = 0; i < this->max_size; i++)
    		{
    			if (this->p[i] == elem)
    			{
    				return 1;
    			}
    			
    		}
    		return 0;
    	}
    
    
    	//输入
    	void input()
    	{
    		for (int i = 0; i < this->max_size; i++)
    		{
    			cin >> p[i];
    		}
    
    		this->current_size = this->max_size;
    	}
    
    	//输出
    	void ouput()
    	{
    		for (int i = 0; i < this->current_size; i++)
    		{
    			cout << p[i] << " ";
    		}
    	}
    
    	//并集 + 排序(A ∪ B = C)
    	int_set* elem_union(int_set *B)
    	{
    		
    		int i, j;
    
    		//动态开辟集合C的内存空间
    		int new_max_size = this->max_size + B->max_size;
    		int_set *C = new int_set(new_max_size);
    
    		//排序集合A,放入集合C中
    		C->p[0] = this->p[0];
    		for (i = 1; i < this->max_size; i++)
    		{
    			for (j = i - 1; this->p[i] < C->p[j] && j >= 0; j--)
    			{
    				C->p[j + 1] = C->p[j];
    			}
    			C->p[j + 1] = this->p[i];
    		}
    
    		//更新C集合的当前大小
    		C->current_size = this->max_size;
            
    		//排序集合B,放入集合C中
    		for (i = 0; i < B->max_size; i++)
    		{
    			if (!C->search(B->p[i])) //查找两个集合是否有相同元素
    			{
    				for (j = C->current_size - 1; B->p[i] < C->p[j] && j >= 0; j--)
    				{
    					C->p[j + 1] = C->p[j];
    				}
    				C->p[j + 1] = B->p[i];
    
    				//更新C集合大小
    				C->current_size++;
    				
    			}
    
    		}
    
    		return C;
    	}
    
    };
    
    
    
    int main()
    {
    	int m = 0, n = 0;
    	cout << "请输入A集合大小:" << endl;
    	cin >> m;
    	cout << "请输入B集合大小:" << endl;
    	cin >> n;
    	int w = m + n;
    	int_set *A = new int_set(m);
    	int_set *B = new int_set(n);
    	int_set *temp = new int_set(w);
    	cout << "请输入集合A元素:" << endl;
    	A->input();
    	cout << "请输入集合B元素:" << endl;
    	B->input();
    	temp = A->elem_union(B);
    	cout << "集合C元素:" << endl;
    	temp->ouput();
    	
    	system("pause");
    	return 0;
    }
    
    展开全文
  • 区间求并集c++实现

    千次阅读 2013-08-21 22:02:03
    #include #define NULL 0 using namespace std; struct section//每个小区间 { double start; double end; bool isuse;...struct whole_section//区间并集 { section* sec; int length; int size;
  • 一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。 */ 代码: #include #include #define MaxSize 50 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int length; } SqList...
  • C++求两个整型集合的并集

    千次阅读 2019-12-03 08:52:50
    功能:编写程序,两个整形集合的并集 #include <iostream> #include <cmath> using namespace std; void input(int [],int [], int, int); void mixture(int [],int [], int, int); int m...
  • 两个数组求并集

    2010-10-26 22:59:56
    对两个数组求并集,由于对数组的操作不是很熟悉,所以将数组中的数存到listbox中,再对listbox中的数进行操作,将相同的都删除,只留下一个,然后再将得到的数重新保存到数组输出,方法有点复杂,但是能够达到效果,...
  • #include<iostream> #include<stdio.h> #include<list> #include<... //set_union求并集 using namespace std; template<class T> void Print(T List) { ...
  • C++ set取并集,交集,差集

    万次阅读 2019-04-15 22:25:10
    C++ set取并集,交集,差集 说明:在C++编程中,使用set集合时,常用到取并集,交集,差集功能。在算法库中,提供了三个函数可以快速进行这三个操作。 需要包含头文件: #include <algorithm> 基本介绍 ...
  • C++归并交集,并集

    千次阅读 2010-06-15 15:12:00
    对于两个有序的元素序列,在归并操作中作适当的处理即可得到二者的交集与并集,代码如下:   #include #include #include #include using namespace std; void vectorjiaoji(const vector& v1,const ...
  • 求并集: #include<bits/stdc++.h> using namespace std; set<int> s1{1,2,3,5}; set<int> s2{5,7,9}; int main(void) { vector<int> ANS; set_union(s1.begin(),s1.end(),s2.b
  • 集合并集

    2018-06-07 12:29:25
    集合并集
  • C++ stl set 集合的交集并集差集 编译环境为dev C++
  • 《数据结构与算法分析》练习3.4和3.5让两个排序后的表的并集和交集,看到一篇博客给出了代码,受启发自己写了一段,其中用到了那篇博客的部分代码,在此表示感谢。 我的主要想法是,由于表是排序后的,不断判断两...
  • c++ set 交集 并集 差集

    万次阅读 2015-09-29 16:24:52
    《Problem A: 集合的交并补集》 Time Limit: 1 Sec Memory Limit: 4 MB Submit: 973 Solved: 242 [Submit][Status][Web Board] Description 任意给定两个包含1-30000个元素的集合A,B(集合中元素类型为任意整型数...
  • C++中set交集和并集

    2018-07-04 17:33:00
    set<int> x1, x2, x; set_union(x1.begin(), x1.end(), x2.begin(), x2.end(), inserter(x, x.... // 求并集 set_intersection(x1.begin(), x1.end(), x2.begin(), x2.end(), inserter(x, x.begin())); //...
  • C++实现字符串交集、并集、差集
  • BitSet 设置及取值 交集和求并集

    千次阅读 2017-01-11 13:41:32
    System.out.println("求并集 "+bm.cardinality());    BitSet bitSet1 = new BitSet();   //将BitSet对象转成byte数组  byte[] bytes1 = bitSet2ByteArray(bm);    //在将byte数组转...
  • C++ set 交集 并集 差集

    2019-03-27 21:33:42
    参考博客:https://blog.csdn.net/zzh1301051836/article/details/48808141 #include <iostream> #include <set> #include <algorithm> using namespace std; void put_in(set<...p...
  • c++ set差集,并集,交集

    千次阅读 2017-08-02 19:47:24
    //并集 set_union(x1.begin(),x1.end(),x2.begin(),x2.end(),inserter(x,x.begin())); it=x.begin(); while(it!=x.end()){ cout*it; it++; } //差集 x.clear(); set_difference(x1.begin(),x1.end(),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,825
精华内容 4,330
关键字:

c++求并集

c++ 订阅